如何获知new Runnable(){run(){}}中的逻辑执行完毕?

如何知道写在runnable()中的逻辑执行完毕??

喵喔喔
浏览 1136回答 2
2回答

绝地无双

boolean awaitTermination(long timeout,TimeUnit unit)throws InterruptedExceptionBlocks 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 原答案里的其他回答也有参考价值

素胚勾勒不出你

ExecutorService es = Executors.newCachedThreadPool();for(int i=0;i<5;i++)&nbsp; &nbsp; es.execute(new Runnable() { /*&nbsp; your task */ });es.shutdown();try{&nbsp; &nbsp; //等待线程执行完毕&nbsp; &nbsp; boolean finshed = es.awaitTermination(1, TimeUnit.MINUTES);&nbsp; &nbsp; if (finished){&nbsp; &nbsp; &nbsp; &nbsp; //do something&nbsp; &nbsp; }}catch(InterruptedException e){&nbsp; &nbsp; //timeout}StackOverflow上的原答案。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java