如何判断线程运行结束
2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
1.join()
????如果是一個(gè)線程,可以使用此方法,多個(gè)不合適
2.CountDownLatch
????此為并發(fā)計(jì)數(shù)器,每個(gè)線程結(jié)束后減一(countDown()),countDownLatch.await();//等待所有子線程執(zhí)行完
3.線程池ThreadPoolExecutor的shutdown與awaitTermination方法
????executor.shutdown();//只是不能再提交新任務(wù),等待執(zhí)行的任務(wù)不受影響 ?
????try { ?
? ? ? ? ? ? boolean loop = true; ?
? ? ? ? ? ? do { ? ?//等待所有任務(wù)完成 ?
? ? ? ? ? ? ? ? loop = !executor.awaitTermination(2, TimeUnit.SECONDS); ?//阻塞,直到線程池里所有任務(wù)結(jié)束
? ? ? ? ? ? } while(loop); ?
? ? ? ? } catch (InterruptedException e) { ?
? ? ? ? ? ? e.printStackTrace(); ?
? ? ? ? } ?
????
????service.shutdown();??
????while(!service.awaitTermination(2,?TimeUnit.SECONDS)){??
????????????System.out.println("service?not?stop");?
? ? ? ? }??
? ?
????//或者isTerminated,如果關(guān)閉后所有任務(wù)都已完成,則返回?true。注意,除非首先調(diào)用?shutdown?或?shutdownNow,否則?isTerminated?永不為?true。
????executor.shutdown();//只是不能再提交新任務(wù),等待執(zhí)行的任務(wù)不受影響 ?
????while(true){ ?
? ? ? ? ? ? if(exe.isTerminated()){?
? ? ? ? ? ? ? ? System.out.println("所有的子線程都結(jié)束了!"); ?
? ? ? ? ? ? ? ? break; ?
? ? ? ? ? ? } ?
? ? ? ? ? ? Thread.sleep(1000); ? ?
? ? ? ? } ?
?
?
ThreadPoolExecutor.getActiveCount()?==?0? ??
轉(zhuǎn)載于:https://my.oschina.net/u/3705388/blog/1828301
總結(jié)
以上是生活随笔為你收集整理的如何判断线程运行结束的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: iframe子页面与父页面元素的访问以及
- 下一篇: 前端记录