源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

java线程并发countdownlatch类使用示例

  • 时间:2021-09-07 16:35 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:java线程并发countdownlatch类使用示例
[u]复制代码[/u] 代码如下:
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();  } }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部