Java并发包CyclicBarrier
Java并发包中的这个类的作用是一个同步辅助类,它允许一组线程互相等待,直到到达某个数量,然后一起运行。新到达的线程要重新等待达到指定数量才能运行。
该类初始化时可以指定,需要一起运行的线程数量。例如
CyclicBarrier cb = new CyclicBarrier(3);
然后只有达到3个线程时才会运行。
然后使用await方法来让线程相互等待。await方法也是调用dowait方法来实现的。
该方法使用简单的数量判断来让未到达指定数量时,线程就会等待。由trip.await()让线程等待。
trip是lock的condition。能够让线程进入一个同样的aqs队列。
当最后一个满足要求的线程到达时。唤醒其他等待线程。
通过nextGeneration中的trip.signalAll()来唤醒其他线程,并且重新设置等待数量
新的线程到来要重新达到满足要求才能运行。
原文作者:无限可能
原文地址: https://zhuanlan.zhihu.com/p/42934032
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
原文地址: https://zhuanlan.zhihu.com/p/42934032
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
相关文章