等待多个子线程执行完毕

1.CountDownLatch
(1) new CountDownLatch(X)
(2) countDownLatch.countDown();
一个线程执行完毕后,X减少1
(3)countDownLatch.await();
等待直至X为0

2.Java CompletableFuture:allOf等待所有异步线程任务结束

List<String> testList = Lists.newArrayList();
        testList.add("cf1"); testList.add("cf2");
        CompletableFuture[] cfArr = testList.stream().
            map(t -> CompletableFuture
                    .supplyAsync(() -> pause(t), executor)
                    .whenComplete((result, th) -> {
                        System.out.println("hello" + result);
                    })).toArray(CompletableFuture[]::new);
        // 开始等待所有任务执行完成
        CompletableFuture.allOf(cfArr).join();
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 下面看一个服务的调用链 设想一下这5个查询服务,平均每次消耗50ms,那么本次调用至少是250ms,我们细想一下,...
    Y了个J阅读 741评论 0 0
  • 在java 1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDownLatch,Cycl...
    Pure_Dream阅读 1,438评论 0 3
  • 线程池ThreadPoolExecutor corepoolsize:核心池的大小,默认情况下,在创建了线程池之后...
    irckwk1阅读 777评论 0 0
  • 一.进程和线程区别 Java线程的5种状态及切换(透彻讲解) - CSDN博客 二.轻量级锁与偏向锁 三.CAS ...
    何人_c310阅读 133评论 0 0
  • 我们先来设想一个场景。 有一个 http 的接口 A,该接口内部实际上是由另外三个接口 B、C、D 返回结果的组合...
    Java机械师阅读 2,238评论 2 1