多线程门闩CountDownLatch的玩法

作者: 激情的狼王 | 来源:发表于2017-08-18 15:44 被阅读0次

CountDownLatch,一个同步辅助类,在完成特定的操作之前,它让一个或多个线程一直等待,

构造函数:new CountDownLatch(2);初始化门闩的长度为2;

它有两个主要方法:latch.await(),当前线程等待,直到门闩的值为0,线程才往下执行;

                                 latch.countDown(),门闩值减一;

使用await在主线程阻塞,每个子线程执行完了,就调用latch.countDown()一次,知道最后门闩为0,解开主线程的等待;

比如主线程开启多个子线程,当所有子线程都执行完了,主线程才能继续往下执行,如下:

publicclassTest {

   publicstaticvoidmain(String[] args) {

     finalCountDownLatch latch =newCountDownLatch(2);

     newThread(){

     publicvoidrun() {

          try{

              System.out.println("子线程"+Thread.currentThread().getName()+"正在执行");

              System.out.println("子线程"+Thread.currentThread().getName()+"执行完毕");

              latch.countDown();

          }catch(InterruptedException e) {

            e.printStackTrace();

          }

  };

}.start();

newThread(){

publicvoidrun() {

try{

       System.out.println("子线程"+Thread.currentThread().getName()+"正在执行");

       System.out.println("子线程"+Thread.currentThread().getName()+"执行完毕");

       latch.countDown();

}catch(InterruptedException e) {

        e.printStackTrace();

}

};

}.start();

try{

     System.out.println("等待2个子线程执行完毕...");

     latch.await();

     System.out.println("2个子线程已经执行完毕");

     System.out.println("继续执行主线程");

}catch(InterruptedException e) {

e.printStackTrace();

}

}

}

相关文章

  • 多线程门闩CountDownLatch的玩法

    CountDownLatch,一个同步辅助类,在完成特定的操作之前,它让一个或多个线程一直等待, 构造函数:new...

  • 门闩CountDownLatch

    挂多把锁,当所有的锁都释放掉后 才执行 可以和锁混合使用,或替代锁的功能。 在门闩未完全开放之前等待。当门闩完全开...

  • CountDownLatch门闩

    门闩是concurrent包中定义的一个类型,是用于多线程通讯的一个辅助类型。门闩相当于在一个门上加多个锁,当线程...

  • 【Java并发】了解CountDownLatch

    CountDownLatch latch翻译:门闩; 插销; 碰锁; 弹簧锁; 理解为倒数的门闩(共享锁) 执行结...

  • Java常见面试题

    多线程 CyclicBarrier和CountDownLatch的区别 CountDownLatch: 一个线程(...

  • CountDownLatch详解

    CountDownLatch中count down是倒数的意思,latch则是门闩的含义。整体含义可以理解为倒数的...

  • 笔记:并发工具类

    1. 等待多线程完成的CountDownLatch 简介 CountDownLatch 允许一个或多个线程等待其他...

  • Java并发-25.并发工具类-CountDownLatch

    等待多线程完成的CountDownLatch CountDownLatch允许一个或者多个线程等待其他线程完成操作...

  • Java中的并发工具类

    CountDownLatch等待多线程完成 CountDownLatch允许一个或多个线程等待其他线程完成操作。 ...

  • CountDownLatch与CyclicBarrier

    CountDownLatch 简介 CountDownLatch使用AQS同步框架实现了多线程计时器。主线程等待所...

网友评论

    本文标题:多线程门闩CountDownLatch的玩法

    本文链接:https://www.haomeiwen.com/subject/odearxtx.html