unity3d methods react router vue使用教程 郑州普通话考试 change事件 mysql当前时间减一天 oracle分页关键字 pr序列设置哪个好 solr索引 python开发安卓应用 oracle行转列函数 python创建数据库 python例子 python定义一个变量 java多态 java正则替换 java编程语言 java终止线程 java学习课程 java的输入 linux用户管理 快捷精灵 脚本大全 steam怎么卸载 苹果手机总是自动重启 R语言初学者指南 3d看图软件 脚本语言 ps反选 linux解压 熊猫头表情包制作 大数据就业方向 樱桃b站怎么发动态 生成海报 resample currentstyle qq提取安装文件失败 图片轮播 送货单软件
当前位置: 首页 > 学习教程  > 编程语言

JAVA多线程-CountDownLatch

2020/7/24 10:22:26 文章标签:

CountDownLatch

java.util.concurrent.CountDownLatch是一个并发构造允许一个或者多个线程等待给定的一组操作完成。

CountDownLatch初始化时设置了一个给定的值,当调用 countDown()方法时这个值会递减, 当这个只为0的时候将唤醒众多调用 await() 方法线程中的一个线程,调用await() 方法的线程将一直阻塞直到count0.

下面是个简单的例子,  Decrementer调用CountDownLatch countDown() 3 次以后, 等待者 Waiter从调用的 await()中释放了。

CountDownLatch latch = new CountDownLatch(3);

Waiter      waiter      = new Waiter(latch);
Decrementer decrementer = new Decrementer(latch);

new Thread(waiter)     .start();
new Thread(decrementer).start();

Thread.sleep(4000);
public class Waiter implements Runnable{

    CountDownLatch latch = null;

    public Waiter(CountDownLatch latch) {
        this.latch = latch;
    }

    public void run() {
        try {
            latch.await();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        System.out.println("Waiter Released");
    }
}

 
public class Decrementer implements Runnable {

    CountDownLatch latch = null;

    public Decrementer(CountDownLatch latch) {
        this.latch = latch;
    }

    public void run() {

        try {
            Thread.sleep(1000);
            this.latch.countDown();

            Thread.sleep(1000);
            this.latch.countDown();

            Thread.sleep(1000);
            this.latch.countDown();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

 

参考翻译:http://tutorials.jenkov.com/java-util-concurrent/countdownlatch.html


本文链接: http://www.dtmao.cc/news_show_50256.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?