博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
16.Java5的CountDownLatch同步工具
阅读量:6173 次
发布时间:2019-06-21

本文共 2251 字,大约阅读时间需要 7 分钟。

1 import java.util.concurrent.CountDownLatch; 2 import java.util.concurrent.ExecutorService; 3 import java.util.concurrent.Executors; 4  5 /** 6  * 16.Java5的CountDownLatch同步工具 7  * 犹如倒计时计数器,调用CountDownLatch对象的CountDown方法就将计数器减1, 8  * 当计数到达0事,则所有等待者或单个等待着开始执行。 9  * 10  * @author LiTaiQing11  *12  */13 public class CountdownLatchTest {14 15     public static void main(String[] args) {16         ExecutorService service = Executors.newCachedThreadPool();17         final CountDownLatch cdOrder = new CountDownLatch(1);18         final CountDownLatch cdAnswer = new CountDownLatch(3);19         for (int i = 0; i < 3; i++) {20             Runnable runnable = new Runnable() {21                 public void run() {22                     try {23                         System.out.println("线程"24                                 + Thread.currentThread().getName() + "正准备接受命令");25                         cdOrder.await();26                         System.out.println("线程"27                                 + Thread.currentThread().getName() + "已接受命令");28                         Thread.sleep((long) (Math.random() * 10000));29                         System.out30                                 .println("线程"31                                         + Thread.currentThread().getName()32                                         + "回应命令处理结果");33                         cdAnswer.countDown();34                     } catch (Exception e) {35                         e.printStackTrace();36                     }37                 }38             };39             service.execute(runnable);40         }41         try {42             Thread.sleep((long) (Math.random() * 10000));43 44             System.out.println("线程" + Thread.currentThread().getName()45                     + "即将发布命令");46             cdOrder.countDown();47             System.out.println("线程" + Thread.currentThread().getName()48                     + "已发送命令,正在等待结果");49             cdAnswer.await();50             System.out.println("线程" + Thread.currentThread().getName()51                     + "已收到所有响应结果");52         } catch (Exception e) {53             e.printStackTrace();54         }55         service.shutdown();56 57     }58 }

 

转载于:https://www.cnblogs.com/litaiqing/p/4650998.html

你可能感兴趣的文章
Python学习笔记之六:在VS中调用Python
查看>>
node.js获取参数的常用方法
查看>>
jquery 的 change() 方法的使用
查看>>
本地计算机上的XXX服务启动后又停止了
查看>>
<s:iterator>标签迭代数据不显示
查看>>
判断 SQLServer 触发器类型,支持多行
查看>>
SQL表连接查询(inner join、full join、left join、right join)
查看>>
阿里云OTS(开放结构化数据服务)可视化管理工具的设计和功能介绍
查看>>
Github创建分支
查看>>
转换PHP脚本成为windows的执行程序
查看>>
Python组织文件 实践:将带有美国风格日期的文件改名为欧洲风格日期
查看>>
实现iOS7上tableView的切割线像iOS6中的效果
查看>>
http://blog.csdn.net/ouyang_peng/article/details/8732644
查看>>
LeetCode ---LRU Cache
查看>>
对于软件测试行业的观察与反思
查看>>
直接插入排序的哨兵的作用
查看>>
Android--数据库数据显示至屏幕
查看>>
JAVA通信系列二:mina入门总结
查看>>
uC/OS-III 概要
查看>>
Redis连接的客户端(connected_clients)数过高或者不减的问题解决方案
查看>>