博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JDK5.0新特性系列---11.5.2线程 同步装置之CountDownLatch
阅读量:6694 次
发布时间:2019-06-25

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

import java.util.concurrent.CountDownLatch;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/**
* CountDownLatch维护一个计数器,等待这个CountDownLatch的线程必须等到计数器为0时才可以继续.
* 以下实例模拟服务器的启动,假设启动一个服务器需要初始化3个组件,当3个组件初始化完毕后,服务器才算成功启动.
*/
/**
* 使用CountDownLatch的关键技术点如下:
* 1.构造CountDownLatch对象时,需要指定计数器的初始值,该值必须大于等于0,一旦对象被创建,其初始值将不能被改变.
* 2.CountDownLatch的await方法使当前线程进入等待状态,直到计数器为0
* 3.CountDownLatch的 和countDown方法使计数器减1.
*/
public class CountDownLatchTest {
/** 初始化组件的线程 */
public static class ComponentThread implements Runnable {
CountDownLatch latch; //计数器
int ID; //组件ID
//构造方法
public ComponentThread(CountDownLatch latch, int ID) {
this.latch = latch;
this.ID = ID;
}
public void run() {
//初始化组件
System.out.println("Initializing component " + ID);
try {
Thread.sleep(500 * ID);
}
catch (InterruptedException e) {}
System.out.println("Component " + ID + " initialized!");
latch.countDown(); //将计数器减1
}
}
/** 启动服务器 */
public static void startServer() throws Exception {
System.out.println("Server is starting.");
//初始化一个初始值为3的CountDownLatch
CountDownLatch latch = new CountDownLatch(3);
//启动3个线程分别去3个组件
ExecutorService service = Executors.newCachedThreadPool();
service.submit(new ComponentThread(latch, 1));
service.submit(new ComponentThread(latch, 2));
service.submit(new ComponentThread(latch, 3));
service.shutdown();
latch.await();//等待3个组件的初始化工作都完成
System.out.println("Server is up!");//当所需的三个组件都完成时,Server就可以继续了
}
public static void main(String... args) throws Exception {
CountDownLatchTest.startServer();
}

本文转自远哥博客园博客,原文链接:http://www.cnblogs.com/taven/archive/2011/12/17/2291475.html,如需转载请自行联系原作者

你可能感兴趣的文章
他们做的通用人工智能,要让所有产品都具备“智能”大脑
查看>>
淘富成真平台——微链投资平台
查看>>
英国芯片厂商ARM实现盈利提升,大股东软银表示非常欣慰
查看>>
IDG刘雨坤:关于SaaS业务七点经验
查看>>
Learning Distributed Representations of Sentences from...
查看>>
奥巴马成立新委员会 加强网络安全
查看>>
阿里全渠道开辟新“试验田” 大数据赋能商家
查看>>
解放网络经理:基于软件的网络释放
查看>>
“云计算”和“虚拟化”的区别
查看>>
tpcc-mysql安装、使用、结果解读
查看>>
知错能改的感知机(Perceptron)
查看>>
深度学习洪流:为何它能瞬间改变你的生活?(上)
查看>>
视频直播成Facebook新宠 社交功能再度被激活
查看>>
5家马来西亚企业和21家中国台湾企业豁免欧盟反规避调查
查看>>
存储器市场大幅拉升 全球半导体销售额高速增长
查看>>
一年手机信息安全囧事大调查,你有没有中招
查看>>
雅虎开发通过摄像头和麦克风捕捉人们想法的“智能”广告牌
查看>>
苹果陷加密风波 和FBI闹得不可开交
查看>>
苹果股票评级遭投行罕见下调 新产品已推不动股价上涨
查看>>
病毒泄密一个接一个,有7招能保护你的数字生活
查看>>