Java 如何判斷執行緒池所有任務是否執行完畢
阿新 • • 發佈:2019-02-02
shutdown
void shutdown()
啟動一次順序關閉,執行以前提交的任務,但不接受新任務。如果已經關閉,則呼叫沒有其他作用。
丟擲:
- 如果安全管理器存在並且關閉,此 ExecutorService 可能操作某些不允許呼叫者修改的執行緒(因為它沒有保持RuntimePermission
("modifyThread")),或者安全管理器的 checkAccess 方法拒絕訪問。
isTerminated
boolean isTerminated()
如果關閉後所有任務都已完成,則返回 true。注意,除非首先呼叫 shutdown 或 shutdownNow,否則 isTerminated 永不為 true。
返回:
如果關閉後所有任務都已完成,則返回 true
/**
* 採用執行緒池開啟多個子執行緒,主執行緒等待所有的子執行緒執行完畢 */ public static void moreThread() { try { int threadNum = 0; for (int i = 0; i < 10; i++) { threadNum++; final int currentThreadNum = threadNum; exe.execute(new Runnable() { @Override public void run() { try { System.out.println("子執行緒[" + currentThreadNum + "]開啟"); Thread.sleep(1000*10); } catch (InterruptedException e) { e.printStackTrace(); }finally{ System.out.println("子執行緒[" + currentThreadNum + "]結束"); } } }); } System.out.println("已經開啟所有的子執行緒"); exe.shutdown(); System.out.println("shutdown():啟動一次順序關閉,執行以前提交的任務,但不接受新任務。"); while(true){ if(exe.isTerminated()){ System.out.println("所有的子執行緒都結束了!"); break; } Thread.sleep(1000); } } catch (InterruptedException e) { e.printStackTrace(); }finally{ System.out.println("主執行緒結束"); } }
子執行緒[1]開啟
子執行緒[6]開啟
子執行緒[2]開啟
子執行緒[5]開啟
子執行緒[9]開啟
已經開啟所有的子執行緒
子執行緒[3]開啟
子執行緒[7]開啟
子執行緒[10]開啟
shutdown():啟動一次順序關閉,執行以前提交的任務,但不接受新任務。
子執行緒[4]開啟
子執行緒[8]開啟
子執行緒[6]結束
子執行緒[3]結束
子執行緒[7]結束
子執行緒[2]結束
子執行緒[1]結束
子執行緒[5]結束
子執行緒[9]結束
子執行緒[4]結束
子執行緒[10]結束
子執行緒[8]結束
所有的子執行緒都結束了!
主執行緒結束
借鑑文章地址:
http://blog.csdn.net/truong/article/details/40227435 原文地址
樓主這麼辛苦,請掃一下樓主的支付寶紅包推薦碼吧,記得一定要消費掉哦。雙贏哦。
1、開啟支付寶首頁搜尋“8282987” 立即領紅包。
2、掃碼領紅包。
標題。