天天看點

CyclicBarrier的使用CyclicBarrier的使用

标簽(空格分隔): java多線程

cyclicbarrier的字面意思是可循環使用(cyclic)的屏障(barrier)。cyclicbarrier的作用是讓一組線程之間互相等待,任何一個線程到達屏障點後就阻塞,直到最後一個線程到達,才都繼續往下執行。個人了解:cyclicbarrier可以看成是一道大門或者關卡,先到的線程會被阻塞在大門口,直到最後一個線程到達屏障時,大門才被打開,所有被阻塞的線程才會繼續幹活。就像是朋友聚餐,隻有最後一個朋友到達時,才會開吃!

<code>cyclicbarrier</code> 的構造函數可以傳入一個整數,其含義是屏障可攔截的線程數,每個線程都可調用await方法告訴cyclicbarrier“我已經到達了屏障前”,cyclicbarrier内部是執行+1操作,一旦屏障前阻塞的線程數等于構造函數傳入的可攔截線程數時,所有被阻塞的線程都将被喚醒,繼續往下執行。

模拟 聚餐場景

循環使用指的是在大門被打開後,可以再次關閉,再次讓之前指定數目的線程在屏障前阻塞等待,然後再次打開大門。

方法reset()的作用就是重置屏障,循環使用。