写两个CyclicBarrier、Phaser的例子。
一、CyclicBarrier。线程达到一定数量再一起执行
public class Test_Cyclic {
public static void main(String[] args) {
CyclicBarrier cyclicBarrier = new CyclicBarrier(3, () -> System.out.println("执行"));
for (int i = 0; i < 6; i++) {
final int temp = i;
new Thread(){
@Override
public void run() {
super.run();
System.out.println("线程" +temp + ":开始");
try {
cyclicBarrier.await();
System.out.println("线程" +temp + ":结束");
} catch (InterruptedException e) {
e.printStackTrace();
} catch (BrokenBarrierException e) {
e.printStackTrace();
}
}
}.start();
}
}
}
结果: