Java 如何判斷線程池全部任務是否執行完畢

shutdown

void shutdown()
  • 啓動一次順序關閉,執行之前提交的任務,但不接受新任務。若是已經關閉,則調用沒有其餘做用。java



      • 拋出:安全

      • SecurityException - 若是安全管理器存在而且關閉,此 ExecutorService 可能操做某些不容許調用者修改的線程(由於它沒有保持RuntimePermission("modifyThread")),或者安全管理器的 checkAccess 方法拒絕訪問。ide


    isTerminated

    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]結束
      全部的子線程都結束了!
      主線程結束
      相關文章
      相關標籤/搜索