CountDownLatch 是 java.util.concurrent 包下的一个同步辅助类,它能使一个或多个线程在其余的线程的一系列操做完成以前一直等待,初始化值为计数器大小(即线程数量)。java
countDown方法,当前线程调用此方法,则计数减一。
await方法,调用此方法会一直阻塞当前线程,直到计时器的值为0。并发
测试线程ide
import java.util.concurrent.CountDownLatch; public class MyThread implements Runnable { private final CountDownLatch startSignal; public MyTestThread(CountDownLatch startSignal) { super(); this.startSignal = startSignal; } @Override public void run() { try { startSignal.await(); //一直阻塞当前线程,直到计时器的值为0 } catch (InterruptedException e) { e.printStackTrace(); } //实际测试操做 doWork(); } private void doWork() { // TODO Auto-generated method stub System.out.println("do work"); } }
测试主方法测试
public class MyTest { public static void main(String[] args) { // 初始化计数器为 1 CountDownLatch start=new CountDownLatch(1); //模擬16个线程 for(int i=0;i<16;i++){ MyTestThread tt =new MyTestThread(start); Thread t = new Thread(tt); t.start(); } //计数器減 1 start.countDown(); //计数器为0,全部线程释放,同时并发 } }