|
|
51CTO旗下网站
|
|
移动端

1.7.11 CyclicBarrier栅栏

《Java多线程与Socket:实战微服务框架》第1章多线程基础,本书尽量采用简要和通俗易懂的方式来介绍多线程知识。本节为大家介绍CyclicBarrier栅栏。

作者:庞永华来源:电子工业出版社|2019-03-26 16:03

【大咖·来了 第7期】10月24日晚8点观看《智能导购对话机器人实践》

1.7.11 CyclicBarrier栅栏

java.util.concurrent.CyclicBarrier是一种可重用的线程阻塞器。通过调用其await()方法在代码中形成“栅栏”,率先执行到“栅栏”处的线程将被“栅栏”(await()方法)阻塞,直到指定数量的线程也都到达“栅栏”处。其构造函数的参数用于指定要阻塞多少个线程,barrierAction参数则用于指定当条件满足时要执行的内容。

  1. public class C1_7_11 implements Runnable {  
  2. private static final Logger log = LoggerFactory.getLogger(C1_7_11.class);  
  3. private static final CyclicBarrier cyclicBarrier = new CyclicBarrier(5);  
  4. private int page;  
  5. public C1_7_11(int page) {  
  6. this.page = page;  
  7. }  
  8. @Override  
  9. public void run() {  
  10. for (int i = 0; i < 2; i++) {  
  11. try {  
  12. // 模拟不同的处理耗时,最慢的一个线程需要5秒  
  13. Thread.sleep(1000L + page * 1000L);  
  14. log.info("{} waiting threads", cyclicBarrier.getNumberWaiting());  
  15. // 一旦调用await,就表示当前线程已完成了自身的处理,并开始等待其他线程  
  16. cyclicBarrier.await(10L, TimeUnit.SECONDS);  
  17. log.info("Continue..."); // 注意这句打印的时间  
  18. } catch (InterruptedException e) {  
  19. e.printStackTrace();  
  20. } catch (BrokenBarrierException e) {  
  21. e.printStackTrace();  
  22. } catch (TimeoutException e) {  
  23. e.printStackTrace();  
  24. }  
  25. }  
  26. }  
  27. public static void main(String[] args) {  
  28. ExecutorService es = Executors.newFixedThreadPool(5);  
  29. for (int i = 0; i < 5; i++) {  
  30. C1_7_11 c = new C1_7_11(i);  
  31. es.execute(c);  
  32. }  
  33. es.shutdown();  
  34. }  


喜欢的朋友可以加入官方的读书群

51CTO读书频道二维码


51CTO读书会第9群:808517103

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

订阅专栏+更多

Jenkins Pipeline可持续化集成

Jenkins Pipeline可持续化集成

优化运维流水线
共3章 | youerning

198人订阅学习

笑熬浆糊之职场那些事

笑熬浆糊之职场那些事

IT人的职场心法
共22章 | Bear_Boss

79人订阅学习

Redis运维秘籍

Redis运维秘籍

运维标配技术
共15章 | one叶孤舟

199人订阅学习

读 书 +更多

Linux指令速查手册

Linux是一款开源的操作系统,得到了广大开发者的青睐。掌握Linux系统的指令及其用法是学习Linux系统的基础。本书详细地介绍了常用Linux指令...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊

51CTO服务号

51CTO播客