标签:unit star 其他 调用 final new time read countdown
java.util.concurrent
CountDownLatch
是一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待
CountDownLatch countDownLatch = new CountDownLatch(int count);
boolean await(long timeout, TimeUnit unit)
能够阻塞线程,直到调用N次countDownLatch.countDown()
方法才立刻返回true
值,释放线程。使当前线程在锁存器倒计数至零之前一直等待,除非线程被中断或超出了指定的等待时间。void countDown()
可以在多个线程中调用 ,计算调用次数是所有线程调用次数的总和。如果计数到达零,则释放所有等待的线程。如果当前计数大于零,则将计数减少。调用了countDown()
方法,在当前计数到达零之前,await()
方法会一直受阻塞。之后,会释放所有等待的线程,await()
的所有后续调用都将立即返回true
。
public class CountDownLatch {
public static void main(String[] args) {
final CountDownLatch latch = new CountDownLatch(10);
Demo ld = new Demo(latch);
// 创建10个线程
for (int i = 0; i < 10; i++) {
new Thread(ld).start();
}
latch.await();
System.out.println("该我了");
}
}
class Demo implements Runnable {
private CountDownLatch latch;
// 有参构造器
public Demo(CountDownLatch latch) {
this.latch = latch;
}
public void run() {
synchronized (this) {
latch.countDown();
}
}
}
}
标签:unit star 其他 调用 final new time read countdown
原文地址:https://www.cnblogs.com/loveer/p/11409961.html