JUC强大的辅助类讲解--->>>CountDownLatchDemo (减少计数)
2024-10-09 01:20:25
原理:
CountDownLatch主要有两个方法,当一个或多个线程调用await方法时,这些线程会阻塞。
其它线程调用countDown方法会将计数器减1(调用countDown方法的线程不会阻塞),
当计数器的值变为0时,因await方法阻塞的线程会被唤醒,继续执行。
import java.util.concurrent.CountDownLatch; /**
*
* @Description:
* *让一些线程阻塞直到另一些线程完成一系列操作后才被唤醒。
*
* CountDownLatch主要有两个方法,当一个或多个线程调用await方法时,这些线程会阻塞。
* 其它线程调用countDown方法会将计数器减1(调用countDown方法的线程不会阻塞),
* 当计数器的值变为0时,因await方法阻塞的线程会被唤醒,继续执行。
*
* 解释:6个同学陆续离开教室后值班同学才可以关门。
*
* main主线程必须要等前面6个线程完成全部工作后,自己才能开干
*/
public class CountDownLatchDemo
{
public static void main(String[] args) throws InterruptedException
{
CountDownLatch countDownLatch = new CountDownLatch(6); for (int i = 1; i <=6; i++) //6个上自习的同学,各自离开教室的时间不一致
{
new Thread(() -> {
System.out.println(Thread.currentThread().getName()+"\t 号同学离开教室");
countDownLatch.countDown();
}, String.valueOf(i)).start();
}
countDownLatch.await();
System.out.println(Thread.currentThread().getName()+"\t****** 班长关门走人,main线程是班长"); } }
最新文章
- Div内有ul li元素,Div设置高度100%,谷歌IE下li过多会显示滚动条,而火狐下就会滚动条就不起作用,li会撑大Div
- php上传文件进度条
- git command
- Java数据类型(一)
- PPI是什么?如何计算?
- sql server判断表是否存在
- 【前端】windows64位必备软件清单
- PHP7变量的内部实现
- Linux维护之nginx宕机,端口被占用
- 一次Spring Bean初始化顺序问题排查记录
- 设计 mysql的单例模式及完整功能
- java生成二维码工具类
- February 12th, 2018 Week 7th Monday
- C#-MVC开发微信应用(5)--自动应答系统-自动回复机器人
- Excel导出到浏览器(个人备份)
- poj2778 DNA Sequence【AC自动机】【矩阵快速幂】
- .NET:鲜为人知的 “Load Context”
- Android储存
- ubuntu:NVIDIA设置性能模式,以降低CPU使用、温度
- node的express中间件之static之ajax提交json
热门文章
- 两个看似相同,结果不同的SQL逻辑
- TensorFlow系列专题(十三): CNN最全原理剖析(续)
- CSS 常用属性之 阴影
- Python python 五种数据类型--元组
- 6.Maven构建过程的各个环节
- pip安装超时问题-pip._vendor.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host=&#39;files.pythonhosted.org&#39;, port=443): Read timed out.
- LFU五种实现方式,从简单到复杂
- SQL Server中STATISTICS IO物理读和逻辑读的误区
- 使用onclick/表单submit跳转到其他页面
- python:用cv2简单实现图片的水平、垂直翻转