博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java中类似C#中Task.wait()的类CountDownLatch
阅读量:6215 次
发布时间:2019-06-21

本文共 921 字,大约阅读时间需要 3 分钟。

当主线程开辟多个子线程,而又需要这些子线程都执行完成后再执行主线程后续的操作,在C#中可以通过Task的wait方法来实现,然而在Java中也有类型的类CountDownLatch,具体用法如下:

public static void main(String[] args) throws InterruptedException {            CountDownLatch latch = new CountDownLatch(3);    for (int i = 0; i < 3; i++) {        Thread t = new Thread() {            public void run() {                try {                    Thread.sleep(2000);//暂停2秒                    System.out.println("线程:"+this.getId()+"完成");                } catch (InterruptedException e) {                    e.printStackTrace();                }                latch.countDown();            }        };        t.start();    }                System.out.println("等待3个线程完成");    latch.await();//线程挂起,等待3个线程都执行完后再执行下面的内容    System.out.println("3个线程都已完成");}

首先我们需要定义总共的线程数并实现CountDownLatch类,每个线程执行完毕后都要执行countDown方法,相当于把总线程数减一。当latch.await()检测到线程数为0的时候就执行后续的相关方法。

转载于:https://www.cnblogs.com/duanjt/p/9259015.html

你可能感兴趣的文章
Android获取程序大小及程序缓存大小
查看>>
web.xml常用标签命令详解
查看>>
#location解读
查看>>
golang -- channel使用
查看>>
git 日常命令
查看>>
java5的线程锁技术
查看>>
内存溢出和内存泄漏的区别,产生原因以及解决方案
查看>>
Android多Dex热修复及CLASS_ISPREVERIFIED
查看>>
Dell服务器网卡驱动升级[CentOS 5.5 X86_64和RHEL 5.6 X86_64]
查看>>
iOS开发 runtime实现原理以及实际开发中的应用
查看>>
JavaWeb 项目与系统时间相差 8 个小时的问题
查看>>
mybatis关于mysql、oracle主键自增长
查看>>
5种做法,将使您的代码更好
查看>>
set names 命令在mysql中除了应付乱码还能做什么?
查看>>
CSS 定位之 z-index 问题分析
查看>>
HDOJ 2023 求平均成绩
查看>>
将usb 声卡集成到android4.0上
查看>>
Netty那点事(二)Netty中的buffer
查看>>
Magento通过命令行刷新索引(index)
查看>>
linux自学_shell理论基础
查看>>