java异步执行多线程任务,执行完每个任务返回状态
时间: 2023-11-02 14:07:38 浏览: 119
在Java中,可以使用线程池来异步执行多线程任务,并且可以通过Future或CompletableFuture来获取每个任务的执行结果。
下面是一个使用CompletableFuture的示例代码:
```java
ExecutorService executor = Executors.newFixedThreadPool(10); // 创建线程池
List<CompletableFuture<Integer>> futures = new ArrayList<>();
for (int i = 0; i < 10; i++) {
final int index = i;
CompletableFuture<Integer> future = CompletableFuture.supplyAsync(() -> {
// 执行任务的代码
return index * 2;
}, executor);
futures.add(future);
}
for (CompletableFuture<Integer> future : futures) {
future.thenAccept(result -> {
// 处理任务执行结果的代码
System.out.println("任务执行结果:" + result);
});
}
executor.shutdown(); // 关闭线程池
```
在这个示例中,我们创建了一个大小为10的线程池,并且使用CompletableFuture来异步执行10个任务。在执行完每个任务后,我们通过thenAccept方法来处理任务的执行结果,并且输出到控制台上。
需要注意的是,在使用CompletableFuture时,我们需要手动关闭线程池,否则会导致程序无法退出。
阅读全文