用java写一个关于CompletableFuture多任务并使用自定义线程池并行执行的方法
时间: 2023-05-24 09:02:55 浏览: 193
A:下面是一个使用Java编写的示例代码,演示了如何使用自定义线程池并行执行多个CompletableFuture任务:
```
import java.util.List;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class MultiTaskWithCustomThreadPool {
// 自定义线程池
private static final ExecutorService THREAD_POOL = Executors.newFixedThreadPool(10);
public static void main(String[] args) throws Exception {
// 创建CompletableFuture任务列表
List<CompletableFuture<Void>> tasks = List.of(
CompletableFuture.runAsync(() -> {
// 执行任务1
System.out.println("Task 1 started.");
sleep(1000);
System.out.println("Task 1 completed.");
}, THREAD_POOL),
CompletableFuture.runAsync(() -> {
// 执行任务2
System.out.println("Task 2 started.");
sleep(2000);
System.out.println("Task 2 completed.");
}, THREAD_POOL)
);
// 并行执行所有任务
CompletableFuture.allOf(tasks.toArray(new CompletableFuture[0])).join();
}
// 睡眠指定毫秒数
private static void sleep(long millis) {
try {
Thread.sleep(millis);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}
}
```
在上面的示例代码中,我们创建了一个Fixed线程池,大小为10,然后使用该线程池并行执行两个CompletableFuture任务,分别输出任务的开始和结束时间。通过调用CompletableFuture.allOf方法,我们等待所有任务完成。