В последнее время я работал над Java CompletableFuture и обнаружил, что мы всегда должны использовать настроенный Threadpool.С его помощью я нашел два способа передачи пула потоков в существующий код.Как показано ниже
Это мой ThreadPool в файле конфигурации
@Override
@Bean(name = "commonThreadPool")
public Executor getAsyncExecutor() {
return new ThreadPoolTaskExecutor();
}
1.Передав существующий ThreadPool в аргумент.
@Autowired
@Qualifier("commonThreadPool")
TaskExecutor existingThreadPool;
CompletableFuture.runAsync(() -> executeTask(),existingThreadPool);
2.Используя async, как показано ниже
@Async("commonThreadPool")
public void executeTask() {
// Execute Some Task
}
, существует ли третий способ, где я могу написать обработчик CompletableFuture или переопределить его существующее поведение в одном месте, где я могу передать пользовательский Threadpool.И после этого, где бы я ни использовал приведенный ниже код, он должен выбрать мой существующий ThreadPool вместо пула forkJoin.
CompletableFuture.runAsync(() -> executeTask());