当前位置:   article > 正文

Java并发编程--CyclicBarrier_康立贤

康立贤

       CyclicBarrier 是一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point)。在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待,此时 CyclicBarrier 很有用。因为该 barrier 在释放等待线程后可以重用,所以称它为循环 的 barrier。CyclicBarrier支持一个可选的 Runnable 命令,在一组线程中的最后一个线程到达之后(但在释放所有线程之前),该命令只在每个屏障点运行一次。若在继续所有参与线程之前更新共享状态,此屏障操作 很有用。

 

业务需求

      一个大型任务常常分配好多子任务去执行,只有当所有的子任务都执行完成时,才能执行主任务。比如在考试系统的抽题逻辑中,抽题是一个大型任务,包括抽出各种题型,比如:单选题、多选题、翻译题、听力题。抽完所有的题才能继续向下执行。按照咱们以前写代码的方式:先抽取单选题,再抽多选题,再抽翻译题,再抽听力题,假设每个抽题时间都为1s,那么完成一个抽题需要4s的时间,显然对电脑资源的利用率没有达到最优。那么我们如何提高性能呢?假设我们是4核的cpu,我们在抽单选题的时候可以同时抽多选题、翻译题和听力题,这样相当于是并行执行多个任务,那么抽完题需要的时间才是1s。

 

实现

      有了上面的需求,那么下面我们来实现,如何抽题。

抽单选题类:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/220806
推荐阅读
相关标签
  

闽ICP备14008679号