@SneakyThrows
public static void main(String[] args) {
//自定义线程池
ThreadPoolExecutor executorService = new ThreadPoolExecutor(
8,
10,
1L,
TimeUnit.SECONDS,
new ArrayBlockingQueue<>(100),
new ThreadPoolExecutor.CallerRunsPolicy());
//使用自定义线程池
/* CompletableFuture<DemandFile> future1 = CompletableFuture.supplyAsync(() -> {
System.out.println("任务一开始");
DemandFile file = new DemandFile();
file.setId("1");
return file;
},executorService);*/
//不加自定义线程池 使用默认的
CompletableFuture<DemandFile> future1 = CompletableFuture.supplyAsync(() -> {
System.out.println("任务一开始");
DemandFile file = new DemandFile();
file.setId("1");
return file;
});
CompletableFuture<DemandFile> future2 = CompletableFuture.supplyAsync(() -> {
System.out.println("任务二开始");
DemandFile file = new DemandFile();
file.setId("2");
return file;
});
////获取结果,有返回值 务一和任务二完成 才走这
future1.thenAcceptBothAsync(future2, (result1, result2) -> {
System.out.println("感知任务一和任务二完成,执行任务三"+result1+"-----"+result2);
});
//获取结果,有返回值
CompletableFuture<String> future = future1.thenCombineAsync(future2, (f1, f2) -> { //参数f1,f2分别对应了future01,future02的返回值
return f1 + ":" + f2 + "-> hello";
});
// Thread.sleep(1000);
接口并行案列
Java并发编程示例
最新推荐文章于 2025-12-02 21:20:38 发布

535

被折叠的 条评论
为什么被折叠?



