Barrier意为“障碍”
可以看看CyclicBarrier的构造方法
当线程调用CyclicBarrier对象await()方法后会被阻塞,同时计数+1,直到达到CyclicBarrier构造方法中的预定的数目,所有线程就会被唤醒。
代码实例
package Condtion;
import java.util.concurrent.BrokenBarrierException;
import java.util.concurrent.CyclicBarrier;
public class CyclicBarrierDemo {
public static void main(String[] args) {
CyclicBarrier cyclicBarrier = new CyclicBarrier(8,()->{
System.out.println("门开了");
});
for(int i=1;i<=8;i++)
new Thread(()->{
System.out.println(Thread.currentThread().getName()+"号被堵在门边了");
try {
cyclicBarrier.await();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (BrokenBarrierException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+"号进门了");
},i+"").start();
}
}