Предположим, у меня есть CompletableFuture, который оборачивает блокирующий вызов, например запрос к серверной части с использованием JDBC. В этом случае, поскольку я не передаю какую-либо службу-исполнитель в качестве параметра CompletableFuture.supplyAsync(), фактическая работа по блокировке получения ресурсов через серверную часть должна выполняться потоком в общем пуле Fork/Join. Разве это не плохая практика, когда потоки из общего пула FJpool выполняют блокирующие вызовы? Преимущество, которое я здесь имею, заключается в том, что мой основной поток не блокируется, поскольку я делегирую блокирующие вызовы для асинхронного выполнения. Проверьте, блокируются ли вызовы JDBC здесь. Если этот вывод верен, почему у вас есть возможность использовать общий FJpool по умолчанию с CompletableFuture?
CompletableFuture fetchUnicorns =
CompletableFuture.supplyAsync(() -> {
return unicornService.getUnicorns();
});
fetchUnicorns.thenAccept(/**Do something with the result*/);
Подробнее здесь: https://stackoverflow.com/questions/457 ... lefuture-f