zoukankan      html  css  js  c++  java
  • CountDownLatch的使用

    通俗的讲就是,CountDownLatch相当于一扇大门,在大门打开之前所有线程都被阻断,一旦大门打开所有线程都将通过,但是一旦大门打开,所有线程都通过了,那么这个CountDownLatch的状态就失效了,门的状态也就不能变了,只能是打开状态。也就是说CountDownLatch的状态是一次性的

    public class CountDownLatchDemo {
        
        final static SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
    
        public static void main(String[] args) throws InterruptedException {
            CountDownLatch latch = new CountDownLatch(2);// 两个工人的协作
            Worker worker1 = new Worker("zhangsan", 5000, latch);
            Worker worker2 = new Worker("lisi", 8000, latch);
            worker1.start();//
            worker2.start();//
            latch.await();// 等待所有工人完成工作
            System.out.println("all work done at " + sdf.format(new Date()));
        }
    
        static class Worker extends Thread {
            String workerName;
            int workTime;
            CountDownLatch latch;
    
            public Worker(String workerName, int workTime, CountDownLatch latch) {
                this.workerName = workerName;
                this.workTime = workTime;
                this.latch = latch;
            }
    
            public void run() {
                System.out.println(workerName + " start at " + sdf.format(new Date()));
                doWork();// 工作了
                System.out.println( workerName + " complete at " + sdf.format(new Date()));
                latch.countDown();// 工人完成工作,计数器减一
    
            }
    
            private void doWork() {
                try {
                    Thread.sleep(workTime);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
    }
  • 相关阅读:
    [NOI2003][bzoj1507] 文本编辑器 editor [splay]
    GDKOI 游记
    [填坑完毕] 寒假作业计划
    省选算法学习-数据结构-splay
    NOIP2017游记
    真·总结
    赛前
    十一黄(xun)金(lian)周感想
    9.17 模拟赛
    9.14 模拟赛
  • 原文地址:https://www.cnblogs.com/moris5013/p/10905693.html
Copyright © 2011-2022 走看看