Java 同步工具类CountDownLatch相当于一个计数器,假设一个方法,等待一个计数器从初始值5变为0,每使用一次countdown()方法,计数器的值减少1,当计数器的值为0时,触发某件事。
使用很简单:
public class LatchTest {
// 计数器设置为5
private static CountDownLatch latch = new CountDownLatch(5);
public void m() {
try {
Thread.sleep(2000L);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+" m()");
// 线程结束时,计数器减少1
latch.countDown();
}
public static void main(String[] args) {
LatchTest test = new LatchTest();
for (int i=0; i<5; i++) {
new Thread(()->test.m()).start();
}
// 等待计数器变为0
try {
latch.await();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("let's call main method");
}
}