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

CloudCone,美国洛杉矶独立服务器特价优惠,美国洛杉矶MC机房,100Mbps带宽不限流量,可选G口,E3-1270 v2处理器32G内存1Gbps带宽,69美元/月

今天CloudCone发布了最新的消息,推送了几款特价独立服务器/杜甫产品,美国洛杉矶MC机房,分配100Mbps带宽不限流量,可以选择G口限制流量计划方案,存储分配的比较大,选择HDD硬盘的话2TB起,MC机房到大陆地区线路还不错,有需要美国特价独立服务器的朋友可以关注一下。CloudCone怎么样?CloudCone服务器好不好?CloudCone值不值得购买?CloudCone是一家成立于2...

标准互联(450元)襄阳电信100G防御服务器 10M独立带宽

目前在标准互联这边有两台香港云服务器产品,这不看到有通知到期提醒才关注到。平时我还是很少去登录这个服务商的,这个服务商最近一年的促销信息比较少,这个和他们的运营策略有关系。已经从开始的倾向低价和个人用户云服务器市场,开始转型到中高端个人和企业用户的独立服务器。在这篇文章中,有看到标准互联有推出襄阳电信高防服务器100GB防御。有三款促销方案我们有需要可以看看。我们看看几款方案配置。型号内存硬盘IP...

10gbiz七月活动首月半价$2.36/月: 香港/洛杉矶CN2 GIA VPS

10gbiz怎么样?10gbiz 美国万兆带宽供应商,主打美国直连大带宽,真实硬防。除美国外还提供线路非常优质的香港、日本等数据中心可供选择,全部机房均支持增加独立硬防。洛杉矶特色线路去程三网直连(电信、联通、移动)回程CN2 GIA优化,全天低延迟。中国大陆访问质量优秀,最多可增加至600G硬防。香港七星级网络,去程回程均为电信CN2 GIA+联通+移动,大陆访问相较其他香港GIA线路平均速度更...

countdownlatch为你推荐
离线包高德地图离线包使用后会省流量吗bean是什么意思bean是可数名词还是不可数名词,为什么短信营销方案短信营销怎么才能更有效果呢?素数算法100以内的质数C算法,要步骤说明,谢谢。excel大写金额怎么在excel中设置大写金额上行宽带上行宽带和下行宽带什么意思java程序员招聘Java程序员,一般招聘都要求些啥腾讯合作伙伴大会腾讯位置服务是什么?医院排队系统怎么将排队系统的信息显示在led上za是哪个国家的奥洛菲是哪个国家的
双线主机租用 出租服务器 阿云浏览器 ddos softlayer sugarsync wordpress技巧 账号泄露 css样式大全 typecho 好看的桌面背景图 国外免费空间 台湾谷歌地址 免费个人空间申请 193邮箱 web服务器的架设 softbank邮箱 刀片式服务器 lol台服官网 银盘服务是什么 更多