`
- 浏览:
777647 次
-
11.5.2线程 同步装置之CountDownLatch
importjava.util.concurrent.CountDownLatch;
importjava.util.concurrent.ExecutorService;
importjava.util.concurrent.Executors;
/**
*CountDownLatch维护一个计数器,等待这个CountDownLatch的线程必须等到计数器为0时才可以继续.
*以下实例模拟服务器的启动,假设启动一个服务器需要初始化3个组件,当3个组件初始化完毕后,服务器才算成功启动.
*/
/**
*使用CountDownLatch的关键技术点如下:
*1.构造CountDownLatch对象时,需要指定计数器的初始值,该值必须大于等于0,一旦对象被创建,其初始值将不能被改变.
*2.CountDownLatch的await方法使当前线程进入等待状态,直到计数器为0
*3.CountDownLatch的和countDown方法使计数器减1.
*/
publicclassCountDownLatchTest{
/**初始化组件的线程*/
publicstaticclassComponentThreadimplementsRunnable{
CountDownLatchlatch;//计数器
intID;//组件ID
//构造方法
publicComponentThread(CountDownLatchlatch,intID){
this.latch=latch;
this.ID=ID;
}
publicvoidrun(){
//初始化组件
System.out.println("Initializingcomponent"+ID);
try{
Thread.sleep(500*ID);
}
catch(InterruptedExceptione){}
System.out.println("Component"+ID+"initialized!");
latch.countDown();//将计数器减1
}
}
/**启动服务器*/
publicstaticvoidstartServer()throwsException{
System.out.println("Serverisstarting.");
//初始化一个初始值为3的CountDownLatch
CountDownLatchlatch=newCountDownLatch(3);
//启动3个线程分别去3个组件
ExecutorServiceservice=Executors.newCachedThreadPool();
service.submit(newComponentThread(latch,1));
service.submit(newComponentThread(latch,2));
service.submit(newComponentThread(latch,3));
service.shutdown();
latch.await();//等待3个组件的初始化工作都完成
System.out.println("Serverisup!");//当所需的三个组件都完成时,Server就可以继续了
}
publicstaticvoidmain(String...args)throwsException{
CountDownLatchTest.startServer();
}
}
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
sqlyog 11.5.2 Ultimate 重新打包版本,安装完成即为注册版本。
solarwinds11.5.2.CRACK破解文件可以直接下载。内有文档,百度网盘下载solarwinds11.5.2安装文件。建议安装在16G以上内存服务器。亲测可用。
solarwinds-NPM.11.5.2的配套安装,包括WINDOWS2008R2-IIS安装,SQL-2008-R2企业版安装,全整套的傻瓜安装流程。
MapInfo Professional 11.5.2 破解文件.rar
Mapinfo 11.5.2破解补丁,最新版本的破解补丁,很好用!
该工具主要用于核苷酸及氨基酸序列比对、引物设计、载体设计等,使用简单、直观。
MapInfo Professional 11.5.2 破解文件.rar
solarwinds 11.5.2 破解版本,监控服务器、网络设备的专业软件
详细介绍了Linux系统下编程环境及编程工具、文件管理(文件类型、ANSI以及POSIX标准下文件读写操作)、进程管理(创建、退出、执行、等待、...线程间同步(互斥锁、读写锁、条件变量)以及网络基本编程、高级应用等内容...
SQLyog MYSQL数据库管理 是一个易于使用的 快速而简洁的图形化管理MYSQL数据库的工具 SQLyog 能够在任何地点有效地管理你的数据库 而且它本身是完全免费的
房友中介管理系统软件市场占有率遥遥领先。房友中介软件11.5.2正式版,可试用,内附安装说明!是不可多得的好软件。
AMD zen3 5600X ASUS B550M PLUS WIFI RX580 黑苹果 Big Sur 11.5.2 OpenCore EFI USB Map 蓝牙可用
小米13.3air 2016 初代 i5 6200 8G macos 11.5.2 bigsur OC引导 ,注意使用nvme硬盘安装,无线已驱动,蓝牙无用。触摸板多手势。HDMI正常,关机不断电,需按开机键强制断电。
AutoCAD OwnerGuard将提供一个真正的安全、分发、出版和授权解决方案,帮助您保护您的文件的所有权。
2015七年级数学下册 11.5.2 用一元一次不等式解决问题导学案(无答案)(新版)苏科版
《Linux多线程服务端编程:使用muduo C++网络库》主要讲述采用现代C++在x86-64 Linux上编写多线程TCP网络服务程序的主流常规技术,重点讲解一种适应性较强的多线程服务器的编程模型,即one loop per thread。...
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
1.使的协议 2.空闲/繁忙流量 3.启动/关闭 4.份验证序列 5.关联/依赖
临床医学中常用的治疗方法为静脉输液。由于病人体质虚弱、睡眠或者由于医护人员工作繁忙等原因,在病人输液的过程中,无法输液的过程进行全程的监控,需要安排医护人员进行监护,增加了医护人员的劳动时间和强度。...
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装