记录一下工作中completableFutures异步多线程的使用

本文介绍了如何使用Java的CompletableFuture进行异步多线程编程,通过ExecutorService管理线程池,创建CompletableFuture实例并执行异步任务,最后使用CompletableFuture.allOf进行任务聚合和阻塞等待。
摘要由CSDN通过智能技术生成


completableFutures异步多线程

代码如下(示例):

//规定线程数量
 ExecutorService executor = Executors.newFixedThreadPool(5);
 //创建completableFutures 集合
 List<CompletableFuture<HashMap<String, Object>>> completableFutures = new ArrayList<>();
 for (String tile : tiles) {
 				//创建异步线程
                CompletableFuture<HashMap<String, Object>> future = CompletableFuture.supplyAsync(() -> {
                    Map<String, Object> todoCounts = appOperNodeService.getTodoCounts(tile);
                    System.out.println(Thread.currentThread().getName());
                    //业务内容
                    HashMap<String, Object> map = new HashMap<>();
                    map.put("zhaunQu", tile);
                    return map;
                },executor);
                //将每个 CompletableFuture 对象 future 添加到一个 List 集合 completableFutures 中。
                completableFutures.add(future);
            }
			//创建一个新的 CompletableFuture<Void> 对象 allFutures,该对象代表了一个在给定的多个 CompletableFuture 对象全部完成后完成的聚合操作。
            CompletableFuture<Void> allFutures =
                    CompletableFuture.allOf(completableFutures.toArray(new CompletableFuture[0]));

            allFutures.join(); // 等待所有任务完成

            for (CompletableFuture<HashMap<String, Object>> future : completableFutures) {
                try {
                //阻塞当前线程并获取异步任务的结果。当调用 future.get() 时,如果异步任务已经完成,该方法会立即返回结果。如果异步任务还未完成,future.get() 方法将会阻塞当前线程,直到异步任务完成并返回结果。
                    HashMap<String, Object> result = future.get();
                    firList.add(result);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值