CountDownLatch使用

该类是一个同步功能的辅助类,使用效果是给定一个技术,当使用这个类的线程判断计数不为0时,则成wait状态,如果为0时则继续运行。要说明的是,技术无法重置,如果需要重置计数,请考虑使用CyclicBarrier类。

初步使用:

代码new CountDownLatch的作用是创建一个技术的类的对象,当线程执行await代码时呈现等待状态,程序不向下继续执行,程序执行countDown代码时计数由1变为0.

CountDownLatch使用_第1张图片


CountDownLatch使用_第2张图片



CountDownLatch使用_第3张图片


裁判等待全部运动员到来:


CountDownLatch使用_第4张图片
CountDownLatch使用_第5张图片


各就各位准备比赛:


CountDownLatch使用_第6张图片


CountDownLatch使用_第7张图片

该实验虽然成功,但是并不能保证在main主线程中执行了service.downMethod()方时,所有的工作线程都呈wait状态,因为某个线程又可能准备的时间较长,可能耗时超过2秒,这是如果调用该方法,就达不到唤醒的目的,也是说裁判没有等待全部的运动员到来时,就开始了比赛。

CountDownLatch使用_第8张图片
CountDownLatch使用_第9张图片

完整的比赛流程:


CountDownLatch使用_第10张图片


CountDownLatch使用_第11张图片


CountDownLatch使用_第12张图片

部分结果如下:


CountDownLatch使用_第13张图片

你可能感兴趣的:(CountDownLatch使用)