public class CountDownLatchTest {
public static void main(String[] args) throws Exception {
final CountDownLatch countDownLatch = new CountDownLatch(10);
new Thread(new Runnable() {
public void run() {
try {
//线程被阻塞,等countDownLatch.countDown()执行了10次以后才释放
countDownLatch.await();
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("finish");
}
}).start();
Thread.sleep(2 * 1000);
for (int i = 1; i <= 10; i++) {
final int index = i;
new Thread(new Runnable() {
public void run() {
countDownLatch.countDown();
System.out.println("countDown:" + index);
}
}).start();
}
}
}
输出:
countDown:1
countDown:5
countDown:4
countDown:7
countDown:8
countDown:3
countDown:6
countDown:9
countDown:2
countDown:10
finish