该类是一个同步功能的辅助类,使用效果是给定一个技术,当使用这个类的线程判断计数不为0时,则成wait状态,如果为0时则继续运行。要说明的是,技术无法重置,如果需要重置计数,请考虑使用CyclicBarrier类。
初步使用:
代码new CountDownLatch的作用是创建一个技术的类的对象,当线程执行await代码时呈现等待状态,程序不向下继续执行,程序执行countDown代码时计数由1变为0.
裁判等待全部运动员到来:
各就各位准备比赛:
该实验虽然成功,但是并不能保证在main主线程中执行了service.downMethod()方时,所有的工作线程都呈wait状态,因为某个线程又可能准备的时间较长,可能耗时超过2秒,这是如果调用该方法,就达不到唤醒的目的,也是说裁判没有等待全部的运动员到来时,就开始了比赛。
完整的比赛流程:
部分结果如下: