前言
java.util.concurrent.CyclicBarrier
类是一种同步机制,它能够对处理一些算法的线程实现同步,所有线程必须等待的一个栅栏,直到所有线程都达到这里,然后所有线程才可以继续作其他事情
创建一些类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| class Horse1 implements Runnable {
private CyclicBarrier cyclicBarrier; public Horse1(CyclicBarrier cyclicBarrier) { this.cyclicBarrier = cyclicBarrier }
@Override public void run() { System.out.println("赛马1来到栅栏前"); cyclicBarrier.await(); System.out.println("赛马1开始跑"); } }
class Horse2 implements Runnable {
private CyclicBarrier cyclicBarrier; public Horse2(CyclicBarrier cyclicBarrier) { this.cyclicBarrier = cyclicBarrier }
@Override public void run() { System.out.println("赛马2来到栅栏前"); cyclicBarrier.await(); System.out.println("赛马2开始跑"); } }
|
在主方法中创建并使用栅栏
<num>
:等待的线程的数量
1 2 3 4 5 6
| public static void main(String[] args) { CyclicBarrier cyclicBarrier = new CyclicBarrier(<num>); new Thread(new Horse1(cyclicBarrier)); new Thread(new Horse2(cyclicBarrier)); }
|
完成