zoukankan      html  css  js  c++  java
  • 并发(三) CountDownLatch

    CountDownLatch

    和CyclicBarrier的区别是,CyclicBarrier可以循环使用,CountDownLatch不可以;CyclicBarrier可以有一个Runnable参数,在所有子任务执行完成后触发一个动作。两者在模型上近似,都是等待一批固定数量的子任务执行完成后才能执行主任务。

    流程如下:

    示例代码如下:

        @Test
        public void test3() throws InterruptedException {
            CountDownLatch countDownLatch = new CountDownLatch(5);
    
            ExecutorService executorService = Executors.newCachedThreadPool();
    
            for(int i = 0; i < 5; i++) {
                executorService.execute(new Task(countDownLatch));
            }
    
            countDownLatch.await();
    
            executorService.shutdown();
        }
    
        public static class Task implements Runnable {
    
            CountDownLatch countDownLatch;
    
            public Task(CountDownLatch countDownLatch) {
                this.countDownLatch = countDownLatch;
            }
    
            @Override
            public void run() {
                System.err.println("当前完成的任务数目:" + countDownLatch.getCount());
                countDownLatch.countDown();
            }
        }
  • 相关阅读:
    Linux 安装 MysQl
    Linux上安装pip以及setuptools
    Linux 安装 python3
    基础 项目部署 上线
    wepsocket 了解一下
    scrapy之中间件
    scrapy之定制命令
    网络爬虫之scrapy框架设置代理
    爬虫之Xpath详解
    3.8软件测试模型
  • 原文地址:https://www.cnblogs.com/asfeixue/p/7911136.html
Copyright © 2011-2022 走看看