Java中的CyclicBarrier循环栅栏详解
目录
- 一、是什么?
- 二、使用demo
- 三、注意
一、是什么?
CyclicBarrier : 循环栅栏,用来进行线程协作,等待线程满足某个计数。
构造时设js置计数个数,每个线程执行到某个需要“同步”的时刻调用 await() 方法进行等待,当等待的线程数满足计数个数时,继续执行
二、使用demo
public static void main(String[] args) { ExecutorService service = Executors.newFixedThreadPool(3); CyclicBarrier barrier = new CyclicBarrier(2, ()-> { log.debug("task1, task2 finish..."); }); service.submit(() -> { log.debug("task1 begin..."); sleep(1); try { barrier.await(); // 2-1=1 } catch (InterruptedException | BrokenBarrierException e) { e.printStackTrace(); }http://www.devze.com }); service.submit(() -> { lohttp://www.devze.comg.debug("task2 begin..."); sleep(2); try { barrier.await(); // 1-1=0 } catch (InterruptedException | BrokenBarrier编程客栈Exception e) { e.printStackTrace(); } }); service.shutdown(); }
三、注意
CyclicBarrier 与 CountDownLatch 的主要区别在于 CyclicBarrier 是可以重用的
到此这篇关于Java中的CyclicBarrier循环栅栏详解的文http://www.devze.com章就介绍到这了,更多相关CyclicBarrier循环栅栏内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!
精彩评论