扫码关注官方订阅号
如何知道写在runnable()中的逻辑执行完毕??
光阴似箭催人老,日月如移越少年。
ExecutorService es = Executors.newCachedThreadPool(); for(int i=0;i<5;i++) es.execute(new Runnable() { /* your task */ }); es.shutdown(); try{ //等待线程执行完毕 boolean finshed = es.awaitTermination(1, TimeUnit.MINUTES); if (finished){ //do something } }catch(InterruptedException e){ //timeout }
StackOverflow上的原答案。
boolean awaitTermination(long timeout,TimeUnit unit)throws InterruptedException Blocks until all tasks have completed execution after a shutdown request, or the timeout occurs, or the current thread is interrupted, whichever happens first.
这里有个假设是,1分钟之内,所有task都会执行完毕, 场景符合的话这种是最简单的。 如果超时时间范围内可能执行不成功,或者无法评估执行时间的场景。 使用这个类,是不是更方便一点?
java.util.concurrent.CountDownLatch
方法可能有多种,适合场景的才是最好的。 楼上贴的stackoverflow 原答案里的其他回答也有参考价值
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
StackOverflow上的原答案。
这里有个假设是,1分钟之内,所有task都会执行完毕, 场景符合的话这种是最简单的。
如果超时时间范围内可能执行不成功,或者无法评估执行时间的场景。
使用这个类,是不是更方便一点?
方法可能有多种,适合场景的才是最好的。
楼上贴的stackoverflow 原答案里的其他回答也有参考价值