JAVA并发CyclicBarrier栅栏

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/vmaps/article/details/80420105

一个任务不同的线程,同步执行

public class Test {
public static void main(String[] args) {
    int N = 4;
    CyclicBarrier barrier  = new CyclicBarrier(N);
    for(int i=0;i<N;i++)
        new Writer(barrier).start();
}
static class Writer extends Thread{
    private CyclicBarrier cyclicBarrier;
    public Writer(CyclicBarrier cyclicBarrier) {
        this.cyclicBarrier = cyclicBarrier;
    }

    @Override
    public void run() {
        System.out.println("线程"+Thread.currentThread().getName()+"正在写入数据...");
        try {
            Thread.sleep(5000);      //以睡眠来模拟写入数据操作
            System.out.println("线程"+Thread.currentThread().getName()+"写入数据完毕,等待其他线程写入完毕");
            cyclicBarrier.await();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }catch(BrokenBarrierException e){
            e.printStackTrace();
        }
        System.out.println("所有线程写入完毕,继续处理其他任务...");
    }
}
}

猜你喜欢

转载自blog.csdn.net/vmaps/article/details/80420105
今日推荐