当前位置: 首页 > news >正文

ForEach 循环中使用多线程处理1

引用:https://blog.csdn.net/m0_50932526/article/details/130204863

 

Java中如何使用CountDownLatch实现多线程同步,确保主线程在所有子线程执行完毕后继续执行。通过创建线程并使用CountDownLatch进行计数,主线程会等待所有子线程完成其任务后再执行后续代码,用于处理并发场景下的数据处理问题。

  1. 对for循环内数据启用多线程执行,主线程与子线程无先后顺序
        public static void main(String[] args) throws InterruptedException {for (int i = 0; i < 5; i++) {ThreadUtil.execAsync(() -> {try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}System.out.println("线程" + Thread.currentThread().getName() + "执行完");});System.out.println("第" + i + "个线程");}System.out.println("完成");}

    执行结果:  

image

 

  1. 对for循环内数据启用多线程执行,主线程在所有子线程执行完成之后执行
    public static void main(String[] args) throws InterruptedException {//初始化线程数量CountDownLatch countDownLatch = ThreadUtil.newCountDownLatch(5);for (int i = 0; i < 5; i++) {ThreadUtil.execute(() -> {try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}System.out.println("线程" + Thread.currentThread().getName() + "执行完");//调用线程计数器-1
                countDownLatch.countDown();});System.out.println("第" + i + "个线程");}//唤醒主线程
        countDownLatch.await();System.out.println("完成");}

执行结果:

image

 

  1. 对for循环内数据启用多线程执行,主线程在所有子线程执行完成之后执行
 public static void main(String[] args) throws InterruptedException {// 线程个数int N = 10;// 实例化一个倒计数器,N指定计数个数CountDownLatch countDownLatch = new CountDownLatch(N);for (int i = 0; i < N; i++) {new Thread(new Runnable() {@Overridepublic void run() {try {Thread.sleep(5000);System.out.println("子线程" + Thread.currentThread().getName() + "休眠结束");} catch (Exception e) {e.printStackTrace();} finally {// 计数减一
                        countDownLatch.countDown(); }}}).start();}// 阻塞,等待当计数减到0时,执行后面的代码
        countDownLatch.await();System.out.println("结束");}

执行结果:

image

4 . JAVA多线程10个线程处理1000个数据

    public static void main(String[] args) throws Exception {List<Integer> idList = new ArrayList<>();for (int i = 1; i <= 1000; i++) {idList.add(i);}int threadNum = 10;ExecutorService executorService = Executors.newFixedThreadPool(threadNum);CountDownLatch countDownLatch = new CountDownLatch(threadNum);int perSize = idList.size() / threadNum;// 定义接受数据集合  多线程情况下,使用线程安全集合List<Integer> resultList = Collections.synchronizedList(new ArrayList());for (int i = 0; i < threadNum; i++) {MultiThread thread = new MultiThread();thread.setIdList(idList.subList(i * perSize, (i + 1) * perSize));thread.setCountDownLatch(countDownLatch);thread.setResultList(resultList);executorService.submit(thread);}countDownLatch.await();executorService.shutdown();// 查看结果
        System.out.println(resultList.size());System.out.println(resultList.stream().sorted().collect(Collectors.toList()));}
}class MultiThread extends Thread {private List<Integer> idList;private CountDownLatch countDownLatch;private List<Integer> result;public void setResultList(List<Integer> result) {this.result = result;}public void setIdList(List<Integer> idList) {this.idList = idList;}public void setCountDownLatch(CountDownLatch countDownLatch) {this.countDownLatch = countDownLatch;}@Overridepublic void run() {try {// 数据处理for (Integer integer : idList) {if (integer % 2 == 0) {result.add(integer);}}} catch (Exception e) {e.printStackTrace();} finally {if (countDownLatch != null) {countDownLatch.countDown();}}}

执行结果:

image

 

http://www.jsqmd.com/news/333495/

相关文章:

  • 万用表,数字示波器厂家哪家比较好?含六位半万用表、工业级数字万用表、钳形万用表及万用表表笔公司优选指南 - 速递信息
  • 分期乐购物额度如何快速回收?最全渠道解析 - 团团收购物卡回收
  • 2026年版|建议收藏】小白到入门必看 RAG技术详解:从基础原理到Agentic RAG落地
  • 对话本体论:碳硅共生与RAE引擎的存在论根源
  • 《梦断代码》阅读笔记2
  • 寒假第三篇笔记
  • GEO软件公司哪家好:专业深度测评 - 品牌企业推荐师(官方)
  • 涉外社保办理,便民服务暖人心
  • 如何找到最安全的分期乐购物额度回收渠道? - 团团收购物卡回收
  • 2026年AI入门指南:如果不掌握这3种“极速微调”技巧,你将落后同龄人10倍
  • 2026年岗亭厂家权威推荐:玻璃/不锈钢/防弹/金属雕花板/高速收费/钢结构/活动岗亭全系供应 - 品牌推荐官
  • 寒假第二篇笔记
  • 分期乐购物额度回收渠道攻略:快速变现的秘密技巧 - 团团收购物卡回收
  • 大庆市英语雅思培训辅导机构推荐-2026权威出国雅思课程中心学校口碑排行榜 - 苏木2025
  • 2026年口碑geo优化服务商实测推荐:主流 GEO 优化服务商深度拆解 - 品牌企业推荐师(官方)
  • 2026 氧气检测仪厂家推荐:合规升级下的精准选型指南 - 品牌推荐排行榜
  • 木箱生产厂家选购指南:如何找到真正靠谱的合作伙伴 - 速递信息
  • 这次终于选对!巅峰之作的AI论文软件 —— 千笔ai写作
  • Android camera子系统概述
  • 2026最新智能包装设备整线推荐!国内优质智能包装设备整线权威榜单发布,资质服务双优助力制药产业高效生产 - 品牌推荐2026
  • 2026木箱包装厂家趋势:从配角到供应链核心的三重变革 - 速递信息
  • 停招初级工程师,大厂 AI 样板失效,软件黑灯工厂走不通,三位一线实践者聊 AI 编程的真实变化
  • 2026年磷酸二氢钾供应企业专业度排名及选购指南 - 工业设备
  • 聊聊中老年相亲网站权威品牌,二次缘性价比高值得选 - 工业设备
  • 2023-2025中国房车/硬升顶房车/新能源房车/皮卡房车/越野房车市场深度解析与顶尖品牌选购指南 - 2026年企业推荐榜
  • 咱今儿聊点硬核的——怎么让两台单相逆变器像跳双人舞似的完美并网。别被那些教科书式推导吓到,咱们直接上手实操,保您三分钟抓住精髓
  • <span class=“js_title_inner“>芯片团队里那些”不可或缺”的”平庸者”</span>
  • 2026年污水处理设备厂家权威推荐:地埋/PP/一体化/生活/集装箱/医院污水处理设备综合供应 - 品牌推荐官
  • python 面向对象基础入门
  • 新手也能上手 AI论文网站,千笔AI VS 学术猹,专为研究生量身打造!