多线程之CountDownLatch

北慕城南 提交于 2019-11-29 16:28:41

CountDownLatch:一个门闩,作用是将某个线程关在门外,等门里的人分赃完毕(计数为0)的时候,才会打开门,让外面的那个线程执行。

这玩意很有用,有利于我们控制许多线程,有序执行业务。

demo:r2必须要等r1执行完才可以执行。

package com.gcc;

import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;

public class CountDownLatchTest {

    public static void main(String[] args) {
        CountDownLatch c = new CountDownLatch(1);

        Runnable r1 = ()->{
            try {
                System.out.println("执行r1............");
                System.out.println("sleep 1s");
                Thread.sleep(1000L);
                c.countDown();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        };

        Runnable r2 = ()->{
            try {
                c.await(60L,TimeUnit.SECONDS);
                System.out.println("执行r2............");
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        };

        new Thread(r2).start();
        new Thread(r1).start();
    }
}

结果:

执行r1............
sleep 1s
执行r2............

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!