1、
package multiThread.art;
import java.util.concurrent.CountDownLatch;
public class CountDownLatchTest {
/**
* CountDownLatch 的构造函数接收一个 int 类型的参数作为“计数器”,
* 如果你想等待 N 个点完成, 这里就传入 N
* 备注1: 这里所说的 N 点, 可以是 N 个线程,也可以是 1 个线程里的 N 个执行步骤。
* 备注2: 用在多个线程的时候, 只需要把这个 CountDownLatch 的引用传递给线程里即可 。
* 备注3: 计数器必须大于等于 0 , 只是等于 0 的时候, 计数器就是“零”。
*/
static CountDownLatch c = new CountDownLatch(2);
public static void main(String[] args) throws InterruptedException {
new Thread(new Runnable() {
@Override
public void run() {
System.out.println(1);
/**
* 当我们调用 CountDownLatch 的 countDown() 方法的时候, N 就会减 1
*/
c.countDown();
System.out.println(2);
c.countDown();
}
}).start();
/**
* 当我们调用 CountDownLatch 的 await() 方法的时候, 会阻塞当前线程,直到 N 变成零 。
*/
c.await();
System.out.println(3);
}
}