Начиная с jOOQ 3.12, эти executeAsync()
методы действительно отсутствуют в типе org.jooq.Batch
. См .: https://github.com/jOOQ/jOOQ/issues/9806
Однако они ничего не делают маги c. Если вы посмотрите на реализацию AbstractQuery.executeAsync(Executor)
, то вот что она делает (по состоянию на jOOQ 3.12):
@Override
public final CompletionStage<Integer> executeAsync(Executor executor) {
return ExecutorProviderCompletionStage.of(
CompletableFuture.supplyAsync(blocking(this::execute), executor), () -> executor
);
}
Две вещи, которые jOOQ делает, вам, возможно, не нужно делать самим:
- Обертывает
CompletableFuture
в прокси, который хранит ссылку на ваш Executor
, для запуска последующих задач также на этом исполнителе, вместо возврата по умолчанию к общему ForkJoinPool
, IMO - существенная ошибка в дизайне CompletableFuture
. - Оборачивает синхронное выполнение (
this::execute
) в оболочку blocking()
, которая удобно упаковывает лог c в ForkJoinPool.managedBlock()
. Рекомендуется при выполнении работ по блокировке в ForkJoinPool