1.CountDownLatch简介
来源:互联网 发布:ubuntu 镜像源 编辑:程序博客网 时间:2024/05/18 03:03
CountDownLatch经常用于监听某些初始化操作,等初始化操作执行完毕后,通知当前线程继续工作。
如下代码,线程1会阻塞在countDown.await()处,需要等待线程2,3
import java.util.concurrent.CountDownLatch;public class P01CountDownLatch{ public static void main(String[] args) { //2表示要等待两次countDown() final CountDownLatch countDown = new CountDownLatch(2); Thread t1 = new Thread(new Runnable() { @Override public void run() { try { System.out.println("进入线程t1,等待其他线程处理完成"); countDown.await();//需要等待 System.out.println("t1线程继续执行"); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }); Thread t2 = new Thread(new Runnable() { @Override public void run() { try { System.out.println("进入线程t2"); Thread.sleep(2000); countDown.countDown(); System.out.println("t2线程执行完毕,通知t1线程继续执行"); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }); Thread t3 = new Thread(new Runnable() { @Override public void run() { try { System.out.println("进入线程t3"); Thread.sleep(3000); countDown.countDown();//如果这行注释掉,t1线程永远不会再执行了 System.out.println("t3线程执行完毕,通知t1线程继续执行"); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }); t1.start(); t2.start(); t3.start(); }}
执行结果:
阅读全文
0 0
- 1.CountDownLatch简介
- CountDownLatch简介
- CountDownLatch 简介和例子
- CountDownLatch 简介和例子
- CountDownLatch 之简介.
- Java并发编程之闭锁CountDownLatch简介
- CountDownLatch
- CountDownLatch
- CountDownLatch
- Countdownlatch
- CountDownLatch
- CountDownLatch
- CountDownLatch
- CountDownLatch
- CountDownLatch
- CountDownLatch
- CountDownLatch
- CountDownLatch
- 运维生涯(三)
- Dubbo常用标签
- 路由——route(2)
- Duan2baka的AC自动机模板!
- react踩坑不完全指北(2)
- 1.CountDownLatch简介
- 104. Maximum Depth of Binary Tree
- 二.PullToRefresh 主方法里面
- caffe画 feature map
- 深吸一口奶茶,领取个京东云免费VPS
- 团队项目负责人的一些感悟
- 17.12.13,web学习第二十五天,还有一年,努力吧青年动态代理
- sm(spring+mybatis)注释版的整合
- 递归法查找特定后缀或关键字文件返