JUC輔助類CyclicBarrier
阿新 • • 發佈:2020-12-30
api解釋:類似CountDownLatch,但是是一個加法計數器。從0開始計數
具體方法:cyclicBarrier.await();等待到CyclicBarrier內規定數量,才會執行await內的語句。
具體程式碼如下:
import java.util.concurrent.BrokenBarrierException;
import java.util.concurrent.CyclicBarrier;
public class CyclicBarrierDemo {
public static void main(String[ ] args) {
CyclicBarrier cyclicBarrier = new CyclicBarrier(7,()->{
System.out.println("召喚神龍");
});
for (int i = 1; i <=7; i++) {
final int num=i;
new Thread(()->{
System.out.println(Thread.currentThread() .getName()+"集齊了第"+num+"顆龍珠");
try {
cyclicBarrier.await();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (BrokenBarrierException e) {
e.printStackTrace();
}
}).start();
}
}
}
結果如下:
Thread-0集齊了第1顆龍珠
Thread-2集齊了第3顆龍珠
Thread-1集齊了第2顆龍珠
Thread-3集齊了第4顆龍珠
Thread-5集齊了第6顆龍珠
Thread-6集齊了第7顆龍珠
Thread-4集齊了第5顆龍珠
召喚神龍
Process finished with exit code 0