循环栅栏,用来进行线程协作,等待线程满足某个计数。构造时设置计数个数。

与CountdownLatch比较,CyclicBarrier是可以重用的。CountdownLatch每次都要创建新的对象,计数个数一旦设置也不能修改。

public static void main(String[] args) {

        ExecutorService executorService = Executors.newFixedThreadPool(2);
        CyclicBarrier cyclicBarrier = new CyclicBarrier(2);

        executorService.submit(() -> {
            log.debug("task1 begin...");
            try {
                Thread.sleep(1000);
                cyclicBarrier.await();
            } catch (InterruptedException | BrokenBarrierException e) {
                e.printStackTrace();
            }
            log.debug("task1 end...");
        });

        executorService.submit(() -> {
            log.debug("task2 begin...");
            try {
                Thread.sleep(2000);
                cyclicBarrier.await();
            } catch (InterruptedException | BrokenBarrierException e) {
本站无任何商业行为
个人在线分享 » 59.CyclicBarrier
E-->