import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class CountDownLatchDemo implements Runnable {
public static final CountDownLatch countDownLatch =new CountDownLatch(2);
public static final CountDownLatchDemo demo =new CountDownLatchDemo();
/**
* @param args
* @throws InterruptedException
*/
public static void main(String[] args) throws InterruptedException {
// TODO Auto-generated method stub
ExecutorService executorService=Executors.newFixedThreadPool(2);
for (int i = 0; i < 2; i++) {
executorService.submit(demo);
}
//等待定义数量的线程都执行完了之后才继续往下执行,这里一调用就会被阻塞住
countDownLatch.await();
System.out.println("执行完毕了");
executorService.shutdown();
}
@Override
public void run() {
// TODO Auto-generated method stub
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("执行了一个线程");
countDownLatch.countDown();
}
}