Java并发包CyclicBarrier

Java并发包中的这个类的作用是一个同步辅助类,它允许一组线程互相等待,直到到达某个数量,然后一起运行。新到达的线程要重新等待达到指定数量才能运行。

该类初始化时可以指定,需要一起运行的线程数量。例如

CyclicBarrier cb = new CyclicBarrier(3);

然后只有达到3个线程时才会运行。

然后使用await方法来让线程相互等待。await方法也是调用dowait方法来实现的。

该方法使用简单的数量判断来让未到达指定数量时,线程就会等待。由trip.await()让线程等待。

trip是lock的condition。能够让线程进入一个同样的aqs队列。

《Java并发包CyclicBarrier》
《Java并发包CyclicBarrier》

当最后一个满足要求的线程到达时。唤醒其他等待线程。

通过nextGeneration中的trip.signalAll()来唤醒其他线程,并且重新设置等待数量

《Java并发包CyclicBarrier》

新的线程到来要重新达到满足要求才能运行。

    原文作者:无限可能
    原文地址: https://zhuanlan.zhihu.com/p/42934032
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞