如何判断线程池中线程任务已经全部执行完毕之 CountDownLatch

本文介绍了在Java中如何利用CountDownLatch解决线程池任务执行完毕后的通知问题。作者通过一个数据压缩的场景,展示了在所有线程任务执行完成后再返回结果的需求,并详细解释了CountDownLatch的api,包括构造器、countDown()和await()方法的使用。同时,文章提醒注意CountDownLatch的一次性特性,建议在需要重复使用时考虑CyclicBarrier。
摘要由CSDN通过智能技术生成

前言:

最近在工作中遇到了与线程相关的问题,对于线程运用不太熟练的我,最近可是在线程的知识海洋里奋力挣扎,最后发现哥伦布又探索出一块新大陆。知识无穷无尽,每天进步一点点,每天吸收一点点,让自己知道:我在进步。

 问题由来:

最近在做数据压缩的功能,需要压缩将近3个月的数据,通过线程池创建线程的方式进行压缩,但是我想在所有的线程任务执行完毕之后再给前端返回,压缩任务已完成,在这之前我做过很多控制,去做这个返回,结果发现,只要是有一个线程完成了任务,它就会返回执行完毕,其实在后台其他线程还是在执行任务的,而且其中有任务报错任然返回执行成功,显然这种返回方式是不正确的。那么如何让所有任务全部执行完毕之后再返回,于是CountDownLatch出现了。

关键词介绍:

  何谓CountDownLatch,该类出现在jdk1.5的并发包中的类。

  官方一点的介绍就是:一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。

  接地气介绍:就是一个线程执行完将CountDownLatch设置的数减一,其他线程执行完减一,直到CountDownLatch的数为0,才能继续往下执行,和我的场景一样,我等到所有线程执行完毕之后再返回。

api介绍

CountDownLatch n

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值