CompletableFuture使用自定义线程池
时间: 2023-11-12 14:56:46 浏览: 217
自定义线程池
在使用CompletableFuture时,可以通过指定自定义的线程池来执行异步任务。下面是一个示例:
```java
ExecutorService executor = Executors.newFixedThreadPool(10); // 创建自定义线程池
CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {
// 异步任务逻辑
return "Hello";
}, executor);
future.thenAccept(result -> {
// 异步任务完成后的处理逻辑
System.out.println(result);
});
executor.shutdown(); // 关闭自定义线程池
```
在以上示例中,通过`Executors.newFixedThreadPool(10)`创建了一个固定大小为10的线程池。然后,使用`CompletableFuture.supplyAsync()`方法指定了要执行的异步任务逻辑,并传入了自定义的线程池。最后,通过`future.thenAccept()`方法指定了异步任务完成后的处理逻辑。
需要注意的是,在使用自定义线程池时,需要手动调用`executor.shutdown()`方法来关闭线程池,以确保在任务执行完毕后线程池能够正确关闭。
通过使用自定义线程池,可以避免多个CompletableFuture共享一个线程池而导致的线程饥饿问题,提高系统的性能。
阅读全文