CountDownLatch(并发任务调度)

工作过程

一个线程等待线其他线程处理完所有调度作业后,合并计算之后计数归零才会往下执行,否则抛出中断异常并且堵塞。

适用于:并发任务调度处理,调度任务之间并发执行。

Executor executor = Executors.newFixedThreadPool(2);
CountDownLatch latch = new CountDownLatch(2); //创建计数器为2的CountDownLatch
executor.execute(()-> { 
   //...业务1
   latch.countDown(); //完成业务1后,计数器-1
}); 
executor.execute(()-> {
   //...业务2
   latch.countDown(); //完成业务2后,计数器再-1,
}); 

//主线程等待线程池调度完所有任务(业务1和业务2)后才可以往下执行。
//线程池在处理业务调度过程中其实是被挂起的,计数器清零时候才会被唤醒。
latch.await();

缺点:并发任务调度处理业务过程中,计数器没有-1的情况。

 latch.countDown(); 需要异常处理,在finally之后必须保证计数器-1,这样线程不管是否异常都可以保证计数器及时-1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值