zoukankan      html  css  js  c++  java
  • Java 多线程系列 CountDownLatch

    CountDownLatch

    一个或多个线程等待其他线程完成操作后在在执行

    CountDownLatch通过一个计数器来实现,await方法阻塞直到 countDown() 调用计数器归零之后释放所有等待的线程,并且任何后续的await调用立即返回。这是一次性现象 - 计数无法重置。如果您需要重置计数的版本,请考虑使用CyclicBarrier。

    
    public class WorkerRunnable implements Runnable {
    
        private CountDownLatch countDownLatch;
        private int i;
    
        public WorkerRunnable(CountDownLatch latch, int i) {
            this.countDownLatch = latch;
            this.i = i;
        }
    
        @Override
        public void run() {
            doWork();
            this.countDownLatch.countDown();
        }
    
        private void doWork() {
            System.out.println("当前的线程: " + i);
        }
    }
    
    public class Client {
    
        public static void main(String[] args) throws InterruptedException {
            final int n = 10;
            CountDownLatch doneSignal = new CountDownLatch(n);
            ExecutorService executor = Executors.newFixedThreadPool(10);
    
            for (int i = 0; i < n; i++) {
                executor.execute(new WorkerRunnable(doneSignal, i));
            }
    
            doneSignal.await();
            System.out.println("结束");
        }
    }
    

    out

    当前的线程: 7
    当前的线程: 6
    当前的线程: 2
    当前的线程: 1
    当前的线程: 9
    当前的线程: 0
    当前的线程: 5
    当前的线程: 4
    当前的线程: 8
    当前的线程: 3
    结束
    
  • 相关阅读:
    在三层开发的DAL层中, 从web.config中读取数据库的连接字符串的方法
    [转]使用 DataAdapter 执行批量更新
    各式各样的 ICONS
    20个“标准的”配色方案
    一款 FORM 框报错提示 Demo
    超漂亮的仿腾讯弹出层效果
    POJ 2192 (DP)
    POJ 2063 (DP)
    POJ 3624 (DP)
    JavaScript技巧集
  • 原文地址:https://www.cnblogs.com/warrior/p/9703988.html
Copyright © 2011-2022 走看看