加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java线程并发countdownlatch类使用示例

发布时间:2020-12-14 19:53:38 所属栏目:Java 来源:网络整理
导读:复制代码 代码如下: package com.yao; import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; /** * 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();
 }
}

您可能感兴趣的文章:

  • 使用CountDownTimer类轻松实现倒计时功能
  • 详解Java多线程编程中CountDownLatch阻塞线程的方法
  • Android中CountDownTimer倒计时器用法实例
  • Java多线程编程之CountDownLatch同步工具使用实例
  • Android 列表倒计时的实现的示例代码(CountDownTimer)
  • Android使用CountDownTimer实现倒数定时器效果
  • Android基于CountDownTimer实现倒计时功能
  • Android基于CountDownView的时间控件扩展
  • Java CountDownLatch完成异步回调实例详解
  • CountDownLatch源码解析之countDown()

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读