理论:
与CountDownLatch相反,CountDownLatch是做减法的,减到0才开始。而CyclicBarrier是做加法,加到一定数值,才开始执行。
代码:
public class CycllicBarrierDemo
{
public static void main(String[] args) {
CyclicBarrier cyclicBarrier = new CyclicBarrier(7, new Thread(new Runnable() {
@Override
public void run() {
System.out.println("最后执行。");
}
}));
for (int i = 0; i < 7; i++) {
final int tem = i;
new Thread(new Runnable() {
@Override
public void run() {
System.out.println(Thread.currentThread().getName()+"第几个" + tem + "线程");
try {
cyclicBarrier.await();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (BrokenBarrierException e) {
e.printStackTrace();
}
}
},String.valueOf(i)).start();
}
}
}
如果线程少于7个,不会执行“最后执行”这个线程,如果多于7个线程,只要达到7个线程就会执行。