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();
                }
            }
        }
    }
  • 相关阅读:
    C语言第四章
    C第三章,指代数据
    DES+MD5加密
    时间选择器
    百度地图定位
    Httputils请求网络数据
    xStream解析xml文件
    pulltorefresh
    slidingmenu的应用
    Duutils创建数据库
  • 原文地址:https://www.cnblogs.com/moris5013/p/10905693.html
Copyright © 2011-2022 走看看