countdownlatchjava 如何实现等待子线程结束

countdownlatch  时间:2021-06-16  阅读:()

java并发countdownlatch和cyclicbarrier的区别

cyclibarriar 就是栅栏,顾名思义:就是一个拦截的装置。

多个线程start后,在栅栏处阻塞住,一般定义栅栏的时候会定义有多少个线程。

比如定义为4个,那么有三个线程到栅栏处,就阻塞住,如果没有第四个,就会一直阻塞,知道启动第四个线程到栅栏处,所有的线程开始全部进行工作。

有点像赛马的例子。

所有的赛马一个一个到起点,然后到齐了,在开始跑。

countdownlatch:初始化定义一个数字(整型),比如定义2,一个线程启动后在await处停止下来阻塞,调用一次countDown,会减一,知道countDown后变为0时的时候,线程才会继续进行工作,否则会一直阻塞。

自己写个赛马的程序,其实就什么都懂了。

countdownlatch 进行异步转同步操作,退出时为什么countdown

CountDownLatch 1、类介绍 一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。

用给定的计数 初始化 CountDownLatch。

由于调用了 countDown() 方法,所以在当前计数到达零之前,await 方法会一直受阻塞。

java 如何实现等待子线程结束

有多种实现方式,下面列出两种。

第一种:实现Callable类,使用有返回值的线程,只有线程执行完成后才会返回结果。

import?java.util.ArrayList; import?java.util.List; import?java.util.Random; import?java.util.concurrent.*; public?class?Main?{ ????//?初始化一个容量为10的线程池 ????static?final?ExecutorService?pool?=?Executors.newFixedThreadPool(10); ????public?static?void?main(String[]?args)?throws?ExecutionException,?InterruptedException?{ ????????List<Future<String>>?futures?=?new?ArrayList<>(); ????????for?(int?i?=?0;?i?<?3;?i++)?{ ????????????MyThread?thread?=?new?MyThread("线程"?+?i); ????????????futures.add(pool.submit(thread)); ????????} ????????for?(Future<String>?future?:?futures)?{ ????????????String?name?=?future.get(); ????????????System.out.println(name?+?"执行完成..."); ????????} ????????System.out.println("所有线程执行完成!"); ????} } class?MyThread?implements?Callable<String>?{ ????private?String?name; ????public?MyThread(String?name)?{ ????????this.name?=?name; ????} ????@Override ????public?String?call()?throws?Exception?{ ????????//?TODO?执行业务 ????????//?随机延迟,模拟线程耗时 ????????Thread.sleep(1000?+?new?Random().nextInt(2000)); ????????return?name; ????} }第二种:使用CountDownLatch实现线程计数,代码如下: import?java.util.Random; import?java.util.concurrent.CountDownLatch; import?java.util.concurrent.ExecutionException; import?java.util.concurrent.ExecutorService; import?java.util.concurrent.Executors; public?class?Main2?{ ????//?初始化一个容量为10的线程池 ????static?final?ExecutorService?pool?=?Executors.newFixedThreadPool(10); ????public?static?void?main(String[]?args)?throws?InterruptedException?{ ????????int?threadCount?=?3; ????????//?初始化CountDownLatch,用于线程计数 ????????CountDownLatch?latch?=?new?CountDownLatch(threadCount); ????????for?(int?i?=?0;?i?<?threadCount;?i++)?{ ????????????MyThread?thread?=?new?MyThread("线程"?+?i,?latch); ????????????pool.execute(thread); ????????} ????????//?阻塞当前线程,CountDownLatch计数减为0时表示所有线程都执行完毕,才会释放主线程的阻塞 ????????latch.await(); ????????System.out.println("所有线程执行完成!"); ????} } class?MyThread?implements?Runnable?{ ????private?String?name; ????private?CountDownLatch?latch; ????public?MyThread(String?name,?CountDownLatch?latch)?{ ????????this.name?=?name; ????????this.latch?=?latch; ????} ????@Override ????public?void?run()?{ ????????//?TODO?执行业务 ????????//?随机延迟,模拟线程耗时 ????????try?{ ????????????Thread.sleep(1000?+?new?Random().nextInt(2000)); ????????}?catch?(InterruptedException?e)?{ ????????} ????????//?计数减一 ????????latch.countDown(); ????????System.out.println(name?+?"执行完毕..."); ????} }

华纳云,3折低至优惠云服务器,独立服务器/高防御服务器低至6折,免备案香港云服务器CN2 GIA三网直连线路月付18元起,10Mbps带宽不限流量

近日华纳云发布了最新的618返场优惠活动,主要针对旗下的免备案香港云服务器、香港独立服务器、香港高防御服务器等产品,月付6折优惠起,高防御服务器可提供20G DDOS防御,采用E5处理器V4CPU性能,10Mbps独享CN2 GIA高速优质带宽,有需要免备案香港服务器、香港云服务器、香港独立服务器、香港高防御服务器、香港物理服务器的朋友可以尝试一下。华纳云好不好?华纳云怎么样?华纳云服务器怎么样?...

提速啦 韩国服务器 E3 16G 3IP 450元/月 韩国站群服务器 E3 16G 253IP 1100元/月

提速啦(www.tisula.com)是赣州王成璟网络科技有限公司旗下云服务器品牌,目前拥有在籍员工40人左右,社保在籍员工30人+,是正规的国内拥有IDC ICP ISP CDN 云牌照资质商家,2018-2021年连续4年获得CTG机房顶级金牌代理商荣誉 2021年赣州市于都县创业大赛三等奖,2020年于都电子商务示范企业,2021年于都县电子商务融合推广大使。资源优势介绍:Ceranetwo...

PIGYun中秋特惠:香港/韩国VPS月付14元起

PIGYun发布了九月份及中秋节特惠活动,提供8折优惠码,本月商家主推中国香港和韩国机房,优惠后最低韩国每月14元/中国香港每月19元起。这是一家成立于2019年的国人商家,提供中国香港、韩国和美国等地区机房VPS主机,基于KVM架构,采用SSD硬盘,CN2+BGP线路(美国为CUVIP-AS9929、GIA等)。下面列出两款主机配置信息。机房:中国香港CPU:1core内存:1GB硬盘:10GB...

countdownlatch为你推荐
activity跳转android activity跳转怎么传对象旺旺群发软件求一个旺旺群发软件renderpartialHtml.RenderPartial 报错listviewitemListView具有多种item布局shoujiao手机电池突然充不上电,是怎么回事?该怎么办?cursorlocation如何用ENVI把不同图像中的相同地点的某个像素点的值读出来。按时间把这个点的值连起来,。谢谢好人。东兴证券网站东兴证券超强版下载,东兴证券超强版v6下载官方网站,东兴证券软件下载云家政网腾讯网的网址是多少?particular教程AE的particular的particle设置ps5教程photoshop cs 教程 最好有视频的
域名停靠 域名是什么 个人域名注册 lamp 5折 technetcal 安云加速器 BWH 12306抢票攻略 警告本网站 国内php空间 免费网站申请 asp免费空间申请 服务器托管什么意思 安徽双线服务器 广州虚拟主机 免费asp空间申请 深圳域名 中国联通宽带测试 阵亡将士纪念日 更多