多任务派发线程处理示例supplyAsync
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | package com.cytc.test; import java.util.ArrayList; import java.util.List; import java.util.Random; import java.util.concurrent.CompletableFuture; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; public class T7 { public static void main(String[] args) { List<List<String>> groupedIdList = new ArrayList<>(); List<String> temp1 = new ArrayList<>(); temp1.add( "123" ); List<String> temp2 = new ArrayList<>(); temp2.add( "456" ); groupedIdList.add(temp1); groupedIdList.add(temp2); List<CompletableFuture<List<String>>> futureList = groupedIdList.stream() .map(taskData -> CompletableFuture.supplyAsync(() -> queryTyGroupList(taskData), new ThreadPoolExecutor( 100 , 500 , 10L, TimeUnit.SECONDS, new LinkedBlockingQueue( 500 )))) .collect(Collectors.toList()); // 确保所有的任务完成 List<List<String>> resultBeanList = futureList.stream().map(CompletableFuture::join).collect(Collectors.toList()); System.out.println( "******************* all tasks handle done**********************" ); resultBeanList.forEach(c->{ System.out.println(c); }); } private static List<String> queryTyGroupList(List<String> codeList) { codeList.forEach(code -> { code = code + " handle data" ; System.out.println(code); try { Thread.sleep( new Random().nextInt( 1000 )); } catch (InterruptedException e) { throw new RuntimeException(e); } }); codeList.add( " new data.. " ); return codeList; } } |
因为相信,所以看见.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
2022-08-02 人生大事--- 选对伴侣