1 CountdownLatch
countdown倒计时,latch锁、门闩
CountDownLatch countdownLatch = new CountDownLatch(2);
Thread threadA = new Thread(new Runnable() {
public void run() {
countdownLatch.await();// 当计数器值未减到0时,线程A进入wait状态
}
});
Thread threadB = new Thread(new Runnable() {
public void run() {
countdownLatch.countDown();// 计数器值减1
}
});
Thread threadC = new Thread(new Runnable() {
public void run() {
countdownLatch.countDown();
}
});
threadA.start();
threadB.start();
threadC.start();
作用就是线程A必须等到线程B、C执行完成后,才能执行(B、C)没有执行顺序的要求,栗子:由A来给B、C线程开发令枪
2 CyclicBarrier
CyclicBarrier cyclicBarrier = new CyclicBarrier(2);
Thread threadA = new Thread(new Runnable() {
public void run() {
cyclicBarrier.await();//当计数器值未减到0时,线程A进入wait状态
}
});
Thread threadB = new Thread(new Runnable() {
public void run() {
cyclicBarrier.await();//线程B将计数器减到0时,线程A、B同时进入就绪态
}
});
threadA.start();
threadB.start();
栗子:小明、小红等着一路回家