CompletableFuture和ThreadPoolExecutor组合
时间: 2023-08-18 07:15:03 浏览: 158
CompletableFuture和ThreadPoolExecutor的组合是一种常见的方式,用于在异步编程中执行并发任务并处理结果。
CompletableFuture是Java 8引入的一个类,用于支持异步编程和任务组合。它提供了一组方法来执行异步操作,并在操作完成时处理结果。ThreadPoolExecutor是Java提供的一个线程池实现,用于管理和执行线程。
使用CompletableFuture和ThreadPoolExecutor的组合,你可以将任务提交给线程池进行并发执行,并使用CompletableFuture来处理任务的结果。下面是一个简单的示例:
```java
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.Executors;
import java.util.concurrent.ThreadPoolExecutor;
public class CompletableFutureWithThreadPoolExample {
public static void main(String[] args) {
// 创建一个线程池
ThreadPoolExecutor executor = (ThreadPoolExecutor) Executors.newFixedThreadPool(5);
// 提交任务给线程池执行,并返回CompletableFuture对象
CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {
// 执行耗时操作
return "Task Result";
}, executor);
// 处理任务结果
future.thenAccept(result -> {
System.out.println("Task Result: " + result);
// 执行其他操作
});
// 关闭线程池
executor.shutdown();
}
}
```
在上面的示例中,我们创建了一个线程池,并使用`supplyAsync()`方法将任务提交给线程池进行异步执行。然后,我们使用`thenAccept()`方法来处理任务的结果。最后,我们关闭了线程池。
通过这种方式,你可以同时执行多个任务,并在任务完成时处理它们的结果。你还可以使用CompletableFuture的其他方法来进行任务组合、异常处理等操作。
希望这个示例对你有所帮助!如果你还有其他问题,请随时提问。
阅读全文