Предположим, у меня есть 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
Плохая ли практика использовать общий пул вилок/объединений по умолчанию с CompletableFuture для выполнения длинных блок ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Разработка нескольких вилок Android -приложения одновременно. Лучшие практики APP_ID?
Anonymous » » в форуме Android - 0 Ответы
- 5 Просмотры
-
Последнее сообщение Anonymous
-