public class CyclicBarrierTest {
public static void main(String[] args) {
CyclicBarrier cyclicBarrier=new CyclicBarrier(7,()->{
System.out.println("導遊:大家都到齊啦,準備上車");
});
for (int i = 0; i <7; i++) {
new Thread(()->{
System.out.println(Thread.currentThread().getName()+"已經到了");
try {
cyclicBarrier.await();
System.out.println(Thread.currentThread().getName()+"我已經上車啦");
} catch (InterruptedException e) {
e.printStackTrace();
} catch (BrokenBarrierException e) {
e.printStackTrace();
}
}).start();
}
}
}
打印結果:
Thread-0已經到了
Thread-1已經到了
Thread-3已經到了
Thread-4已經到了
Thread-5已經到了
Thread-2已經到了
Thread-6已經到了
導遊:大家都到齊啦,準備上車
Thread-6我已經上車啦
Thread-0我已經上車啦
Thread-1我已經上車啦
Thread-3我已經上車啦
Thread-4我已經上車啦
Thread-5我已經上車啦
Thread-2我已經上車啦
有興趣的可以查看下源碼,看看爲什麼是導遊語句先打印,線程上車語句後打印的。