CountDownLatch是一个同步工具类,它允许一个或多个线程一直等待,直到其他线程的操作执行完后再执行
CountDownLatch是在java1.5被引入的,跟它一起被引入的并发工具类还有CyclicBarrier、Semaphore、ConcurrentHashMap和BlockingQueue,它们都存在于java.util.concurrent包下。CountDownLatch这个类能够使一个线程等待其他线程完成各自的工作后再执行。例如,应用程序的主线程希望在负责启动框架服务的线程已经启动所有的框架服务之后再执行。
ExecutorService executorService = Executors.newFixedThreadPool(5);
Log.e("huo >>>", "AppApplication = run start");
final CountDownLatch parserCtl = new CountDownLatch(5);
for (int i = 0; i < 5; i++) {
final int finalI = i;
executorService.execute(new Runnable() {
@Override
public void run() {
Log.e("huo >>>", "AppApplication = run " + finalI);
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
parserCtl.countDown();
}
});
}
try {
parserCtl.await();
} catch (InterruptedException e) {
e.printStackTrace();
}
Log.e("huo >>>", "AppApplication = complete" );
这里记录方便日后复习
具体应用请参考大牛总结:https://www.cnblogs.com/lixuwu/p/6045378.html
网友评论