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............