void shutdown()
啓動一次順序關閉,執行之前提交的任務,但不接受新任務。若是已經關閉,則調用沒有其餘做用。java
拋出:安全
SecurityException
- 若是安全管理器存在而且關閉,此 ExecutorService 可能操做某些不容許調用者修改的線程(由於它沒有保持RuntimePermission
("modifyThread")),或者安全管理器的 checkAccess 方法拒絕訪問。ide
boolean isTerminated()
若是關閉後全部任務都已完成,則返回 true。注意,除非首先調用 shutdown 或 shutdownNow,不然 isTerminated 永不爲 true。post
返回:spa
若是關閉後全部任務都已完成,則返回 true.net
* 採用線程池開啓多個子線程,主線程等待全部的子線程執行完畢 */ 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]結束 全部的子線程都結束了! 主線程結束