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?+?"执行完毕..."); ????} }

湖北50G防御物理服务器( 199元/月 ),国内便宜的高防服务器

4324云是成立于2012年的老牌商家,主要经营国内服务器资源,是目前国内实力很强的商家,从价格上就可以看出来商家实力,这次商家给大家带来了全网最便宜的物理服务器。只能说用叹为观止形容。官网地址 点击进入由于是活动套餐 本款产品需要联系QQ客服 购买 QQ 800083597 QQ 2772347271CPU内存硬盘带宽IP防御价格e5 2630 12核16GBSSD 500GB​30M​1个IP...

sharktech:老牌高防服务器商,跳楼价,1G独享$70、10G共享$240、10G独享$800

不知道大家是否注意到sharktech的所有服务器的带宽价格全部跳楼跳水,降幅简直不忍直视了,还没有见过这么便宜的独立服务器。根据不同的机房,价格也是不一样的。大带宽、不限流量比较适合建站、数据备份、做下载、做流媒体、做CDN等多种业务。 官方网站:https://www.sharktech.net 付款方式:比特币、信用卡、PayPal、支付宝、西联汇款 以最贵的洛杉矶机器为例,配置表如...

hostio荷兰10Gbps带宽,10Gbps带宽,€5/月,最低配2G内存+2核+5T流量

成立于2006年的荷兰Access2.IT Group B.V.(可查:VAT: NL853006404B01,CoC: 58365400) 一直运作着主机周边的业务,当前正在对荷兰的高性能AMD平台的VPS进行5折优惠,所有VPS直接砍一半。自有AS208258,vps母鸡配置为Supermicro 1024US-TRT 1U,2*AMD Epyc 7452(64核128线程),16条32G D...

countdownlatch为你推荐
身份证系统电子身份证如何办理存储区域网络什么是存储局域网?组建它需要哪些内容?4k超高清视频下载哪里有4K片源下载啊?补充:刚入手了一个4k电视盒,小美盒子V9,说是支持4k。正好我的电视机是4k的,想知道哪里有得下载呢?有朋友说我傻,现在基本上没有4k片源下载,而且不知道什么时候才有。等到流行的时候也许这个机器又淘汰啦!我该怎么办啊?短信营销方案有谁实验过短息营销,这个方法好吗?大家可以试试啊!renderpartialrender farm 是什么意思刷ip流量免费刷流量软件有哪些?哪个免费刷流量工具最好?sms是什么短信确认码是什么云办公平台什么叫云办公啊?谁能通俗的给我讲下yui3YUI最详细的资料怎么查微信注册时间怎么知道微信上次登录时间
备案域名 移动服务器租用 播放vps上的视频 mach 缓存服务器 68.168.16.150 Hello图床 parseerror eq2 华为4核 权嘉云 赞助 腾讯实名认证中心 ca187 in域名 东莞服务器托管 万网注册 免费稳定空间 大化网 杭州电信 更多