java线程并发countdownlatch类使用示例

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的使用,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

取消

有人回复邮件通知

提交评论

相关文章

Java中的String是不可变对象 在面向对象及函数编程语言中,不...
String, StringBuffer 和 StringBuilder 可变性 String不可变...
序列化:把对象转换为字节序列的过程称为对象的序列化. 反序...
先说结论,是对象!可以继续往下看 数组是不是对象 什么是对...
为什么浮点数 float 或 double 运算的时候会有精度丢失的风险...
面试题引入 这里引申出一个经典问题,看下面代码 Integer a ...