首页 / 科技数码 / 正文

如何判断线程池内线程已执行完毕 

判断线程池内线程已执行完毕可以通过以下几种方式:

1. 使用线程池的原生函数isTerminated():这个方法在执行shutdown()关闭线程池后,判断是否所有任务已经完成。全部完成返回true,否则返回false。这种方式操作简便,但需要主线程阻塞。

2. 使用CountDownLatch:这种方式操作相对简便,可以把等待线程池中任务完成后的后续工作做成任务,同样放到线程池中运行,简单来说,就是可以控制线程池中任务执行的顺序。缺点是需要提前知道任务的数量。

3. ThreadPoolExecutor的getCompletedTaskCount()方法:判断完成任务数和全部任务数是否相等。

4. 手动维护一个公共计数:原理和闭锁类似,就是更加灵活。

5. 使用submit向线程池提交任务,Future判断任务执行状态。

如有侵权请及时联系我们处理,转载请注明出处来自