CountDownLatch的一个非常典型的应用场景是:有一个任务想要往下执行,但必须要等到其他的任务执行完毕后才可以继续往下执行。假如我们这个想要继续往下执行的任务调用一个CountDownLatch对象的await()方法,其他的任务执行完自己的任务后调用同一个CountDownLatch对象上的countDown()方法,这个调用await()方法的任务将一直阻塞等待,直到这个CountDownLatch对象的计数值减到0为止。
CountDownLatch类有3个基本元素:
- 初始值决定CountDownLatch类需要等待的事件的数量。
- await() 方法, 被等待全部事件终结的线程调用。
- countDown() 方法,事件在结束执行后调用。
当创建 CountDownLatch 对象时,对象使用构造函数的参数来初始化内部计数器。每次调用 countDown() 方法, CountDownLatch 对象内部计数器减一。当内部计数器达到0时, CountDownLatch 对象唤醒全部使用 await() 方法睡眠的线程们。
不可能重新初始化或者修改CountDownLatch对象的内部计数器的值。一旦计数器的值初始后,唯一可以修改它的方法就是之前用的 countDown() 方法。当计数器到达0时, 全部调用 await() 方法会立刻返回,接下来任何countDown() 方法的调用都将不会造成任何影响。
此方法与其他同步方法有这些不同:
CountDownLatch 机制不是用来保护共享资源或者临界区。它是用来同步一个或者多个执行多个任务的线程。它只能使用一次。像之前解说的,一旦CountDownLatch的计数器到达0,任何对它的方法的调用都是无效的。如果你想再次同步,你必须创建新的对象。
CountDownLatch 类有另一种版本的 await() 方法,它是:
- await(long time, TimeUnit unit): 此方法会休眠直到被中断; CountDownLatch 内部计数器到达0或者特定的时间过去了。TimeUnit 类包含了:DAYS, HOURS, MICROSECONDS, MILLISECONDS, MINUTES, NANOSECONDS, 和 SECONDS.
【转】http://blog.csdn.net/junshuaizhang/article/details/39580751
相关推荐
WindowsQwen2.5VL环境搭建-执行脚本
vmware虚拟机安装教程
资源内项目源码是均来自个人的课程设计、毕业设计或者具体项目,代码都测试ok,都是运行成功后才上传资源,答辩评审绝对信服的,拿来就能用。放心下载使用!源码、说明、论文、数据集一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 4、如有侵权请私信博主,感谢支持
python学习一些项目和资源
1 工业机器人定义及其发展(了解) 2 工业机器人基本组成及技术参数(掌握) 3 工业机器人的分类及典型应用(了解)
SVID_20250228_153051_1.mp4
【毕业设计】java-springboot-vue家居日用小百货交易网站实现源码(完整前后端+mysql+说明文档+LunW).zip
build test yyyy
解决鼠标右键没有“新建”按钮的问题
项目资源包含:可运行源码+sql文件+文档 python3.8+django+spider+mysql5.7+vue 适用人群:学习不同技术领域的小白或进阶学习者;可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 后台路径地址:localhost:8080/django50l5z/admin/dist/index.html 管理员进入主页,主要包括对系统主页、个人中心、用户管理、新信息管理、图书借阅管理、系统管理等功能的操作。 进入看板页面,您可以查看实时数据信息,如评级统计、作者统计、制作人统计、出版年份统计、出版商统计、贷款统计等。 用户进入系统时,主要支持系统主页、个人中心、新信息管理、图书借阅管理、系统管理等功能。
【毕业设计-java】springboot-vue汉服文化平台网站实现源码(完整前后端+mysql+说明文档+LunW).zip
python学习资源
英特尔(R) USB 3.0 可扩展主机控制器,usb3.0控制器驱动
前台: 首页 、白酒管理 、公告、个人中心 管理员: 系统首页 、白酒管理 、个人中心 、用户管理 、系统管理 关键技术:Springboot框架 、Vue.js技术、 Hadoop、B/S结构、协同过滤算法 技术支持:已测试可正常运行,调试问题可联系客服有偿解决。 更多项目:3000+优质源码,支持【定制】、修改、部署、讲解和文档。
python学习一些项目和资源
python学习教程
python学习资源
IMG_20250310165014947.jpg
tdac034.pdf
前台: 首页 、电影论坛 、电影资讯 、留言消息 管理员: 首页 、用户 、电影票房 、留言消息 、电影论坛 、系统管理 、个人中心 关键技术:Springboot框架 、Vue.js技术、 Hadoop、B/S结构、协同过滤算法 技术支持:已测试可正常运行,调试问题可联系客服有偿解决。 更多项目:3000+优质源码,支持【定制】、修改、部署、讲解和文档。