暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

CountDownLatch使用

小胡的博客 2018-10-21
292

   

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

初步使用:

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

案例一:

案例二:

各就各位准备比赛:


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

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

完整的比赛流程:

部分结果如下:


文章转载自小胡的博客,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论