=
public class CyclicBarrierTest2 {
static CyclicBarrier cyclicBarrier = new CyclicBarrier(2, new A());
public static void main(String[] args) {
new Thread(()->{
try {
cyclicBarrier.await();
}catch (Exception e){
}
System.out.println(1);
}).start();
try{
cyclicBarrier.await();
}catch (Exception e){
}
System.out.println(2);
}
static class A implements Runnable {
@Override
public void run() {
System.out.println("3");
}
}
}
《java并发编程艺术》上看到的,为什么这段代码输出一定是312?
3第一个输出没问题,但1和2不是应该随机顺序吗?
于是我好奇又加了一个线程
public class CyclicBarrierTest2 {
static CyclicBarrier cyclicBarrier = new CyclicBarrier(3, new A());
public static void main(String[] args) {
new Thread(()->{
try {
cyclicBarrier.await();
}catch (Exception e){
}
System.out.println(1);
}).start();
new Thread(()->{
try {
cyclicBarrier.await();
}catch (Exception e){
}
System.out.println(4);
}).start();
try{
cyclicBarrier.await();
}catch (Exception e){
}
System.out.println(2);
}
static class A implements Runnable {
@Override
public void run() {
System.out.println("3");
}
}
}
发现除了3是第一个输出,其他都是随机的,好奇怪= =