javar的CountDownLatch是个计数器,它有一个初始数,等待这个计数器的线程必须等到计数器倒数到零时才可继续。
package com.yao;import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/**
* CountDownLatch是个计数器,它有一个初始数,
* 等待这个计数器的线程必须等到计数器倒数到零时才可继续。
*/
public class CountDownLatchTest {
/**
* 初始化组件的线程
*/
public static class ComponentThread implements Runnable {
// 计数器
CountDownLatch latch;
// 组件ID
int 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();
}
}
/**
* 启动服务器
*/
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();
//等待3个组件的初始化工作都完成
latch.await();
//当所需的三个组件都完成时,Server就可继续了
System.out.println("Server is up!");
}
public static void main(String[] args) throws Exception {
CountDownLatchTest.startServer();
}
}
上一篇:详解java装饰模式(Decorator Pattern)下一篇:Java使用poi导出ppt文件的实现代码 热门搜索:
java多线程并发
Java并发
线程并发
并发线程
使用示例
相关文章
java线程并发countdownlatch类使用示例
2021-10-12阅读(7300)评论(0)推荐()javar的CountDownLatch是个计数器,它有一个初始数,等待这个计数器的线程必须等到计数器倒数到零时才可继续。
Java线程并发工具类CountDownLatch原理及用法
2021-11-19阅读(7482)评论(0)推荐()这篇文章主要介绍了Java线程并发工具类CountDownLatch原理及用法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要...
java并发编程JUC CountDownLatch线程同步
2021-09-10阅读(5331)评论(0)推荐()这篇文章主要介绍CountDownLatch是什么、CountDownLatch 如何工作、CountDownLatch 的代码例子来展开对java并发编程JU...
java并发包中CountDownLatch和线程池的使用详解
2021-10-08阅读(9251)评论(0)推荐()这篇文章主要介绍了java并发包中CountDownLatch和线程池的使用详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
java线程并发cyclicbarrier类使用示例
2021-11-19阅读(6292)评论(0)推荐()CyclicBarrier类似于CountDownLatch也是个计数器,不同的是CyclicBarrier数的是调用了CyclicBarrier.await(...
Java并发编程之CountDownLatch源码解析
2021-11-19阅读(10031)评论(0)推荐()这篇文章主要介绍了Java并发编程之CountDownLatch源码解析,文中有非常详细的代码示例,对正在学习java并发编程的小伙伴们有很好的帮助,需要的朋友...
JAVA多线程CountDownLatch使用详解
2021-10-12阅读(3464)评论(0)推荐()这篇文章主要为大家详细介绍了JAVA多线程CountDownLatch的使用,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
取消
提交评论