zoukankan      html  css  js  c++  java
  • java多线程----CountDownLatch

    package com.test;
    import java.util.concurrent.CountDownLatch;
    import java.util.concurrent.CyclicBarrier;
    
    public class CountDownLatchTest1 {
    
        private static int LATCH_SIZE = 5;
        private static CountDownLatch doneSignal;
        public static void main(String[] args) {
    
            try {
                doneSignal = new CountDownLatch(LATCH_SIZE);
    
                // 新建5个任务
                for(int i=0; i<LATCH_SIZE; i++)
                    new InnerThread().start();
    
                System.out.println("main await begin.");
                // "主线程"等待线程池中5个任务的完成
                doneSignal.await();
    
                System.out.println("main await finished.");
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    
        static class InnerThread extends Thread{
            public void run() {
                try {
                    Thread.sleep(1000);
                    System.out.println(Thread.currentThread().getName() + " sleep 1000ms.");
                    // 将CountDownLatch的数值减1
                    doneSignal.countDown();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
    }
    结果说明:主线程通过doneSignal.await()等待其它线程将doneSignal递减至0。其它的5个InnerThread线程,每一个都通过doneSignal.countDown()将doneSignal的值减1;当doneSignal为0时,main被唤醒后继续执行。
  • 相关阅读:
    安装rocketmq并配置管理界面
    centos7搭建xl2tpd
    搭建fastfds+nginx
    申请SSL域名证书
    nginx返回状态码
    搭建v/2/ray和sserver
    第十一周课程总结
    第八周课程总结
    实验报告七&&课程总结
    第八周课程报告&&实验报告六
  • 原文地址:https://www.cnblogs.com/yaowen/p/9334609.html
Copyright © 2011-2022 走看看