countdownlatch是一个同步辅助类,它允许一个或多个线程一直等待直到其他线程执行完毕才开始执行。
用给定的计数初始化countdownlatch,其含义是要被等待执行完的线程个数。
每次调用countdown(),计数减1
主程序执行到await()函数会阻塞等待线程的执行,直到计数为0
1:多线程读取批量文件, 并且读取完成之后汇总处理
2:多线程读取excel多个sheet,读取完成之后获取汇总获取的结果
3:多个人一起一起来吃饭,主人等待客人到来,客人一个个从不同地方来到饭店,主人需要等到所有人都到来之后,才能开饭
4:汽车站,所有乘客都从不同的地方赶到汽车站,必须等到所有乘客都到了,汽车才会出发,(如果设置了超时等待,那么当某个时间点到了,汽车也出发)
5: 百米赛跑,4名运动员选手到达场地等待裁判口令,裁判一声口令,选手听到后同时起跑,当所有选手到达终点,裁判进行汇总排名
6: 4名选手进行大众投票,投票现场有500个票, 投票时间是30分钟,50老百晓0个票投完结束投票,或者投票时间到了也结束投票
作用:可以用来确保某些活动直到其他活动都完成后才继续执行。
countdownlatch非常适合于对茼蒿怎么做好吃任务进行拆分,使其并行执行,比如某个任务执行2s,其对数据的请求可以分为五个部分,那么就可以将这个任务拆分为5个子任务,分别交由五个线程执行,执行完成之后再由主线程进行汇总,此时,总的执行时间将决定于执行最慢的任务,平均来看,还是大大减少了总的执行时间。
注意事项:
使用countdownlatch必须确保计数器数量与子线程数量一致,且countdown必须要执行,否则出现计数器不为0,导致主线程一致等待的情况在执行任务的线程中,使用了try…finally结构,该结构可以保证创建的线程发生异常时countdownlatch.c军舰排水量ountdown()方法也会执行,也就保证了主线程不会一直处于等待状态。public static void main(string[] args) { countdownlatchutils.initialize("da1", 5); list<string> list=new copyonwritearraylist<>(); executorutils.create(()->{ system.out.println("张三正在马鞍山,准备赶到南京坐飞机,需要1小时的车程到机场"); sleeptools.cond(4); list.add("张三"); countdownlatchutils.countdown("da1"); }); executorutils.create(()->{ system.out.println("李四正在徐州,准备赶到南京坐飞机,需要5小时的车程到机场"); sleeptools.cond(15); list.add("李四"); countdownlatchutils.countdown("da1"); }); executorutils.create(()->{ system.out.println("王五正在芜湖,准备赶到南京坐飞机,需要2小时的车程到机场"); sleeptools.co烟酸nd(9); list.add("王五"); countdownlatchutils.countdown("da1"); }); executorutils.create(()->{ //飞机起飞 countdownlatchutils.await("da1",10); //这里先模拟10秒 360秒=1小时 system.out.println("南京禄口机场_机长启动飞机起飞"); //当前航班已到乘客 回族的习俗 system.out.println("当前航班已到乘客"+list); }); }
以上代码都是我封装后的,主要是看逻辑就行了
张三正在马鞍山,准备赶到南京坐飞机,需要1小时的车程到机场
李四正在徐州,准备赶到南京坐飞机,需要5小时的车程到机场
王五正在芜湖,准备赶到南京坐飞机,需要2小时的车程到机场
南京禄口机场_机长启动飞机起飞
当前航班已到乘客[张三, 王五]
到此这篇关于java多线程countdownlatch的实现的文章就介绍到这了,更多相关java多线程countdownlatch内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!
本文发布于:2023-04-05 01:51:00,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/032d44256fc5f9ab711d97c85f969218.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:Java多线程CountDownLatch的实现.doc
本文 PDF 下载地址:Java多线程CountDownLatch的实现.pdf
留言与评论(共有 0 条评论) |