監聽執行緒池執行緒走完之後執行下一步方法,

2021-10-02 07:39:01 字數 776 閱讀 1220

在使用執行緒池,當多個執行緒非同步執行的時候,我們往往不好判斷是否執行緒池中所有的子執行緒都已經執行完畢,但有時候這種判斷卻很有用

1,監聽執行緒池執行緒是否走完,使用showdown()方法,阻止執行緒池繼續接收執行緒,然後whrle(true)迴圈判斷是否執行緒池內執行緒全部執行完畢,但這個方法有個壞處,介面會處於阻塞狀態,直到跳出迴圈

public static void main(string args) throws executionexception, interruptedexception 

exec.shutdown();

while(true)

thread.sleep(1000);

}}

2,通過shutdown將執行緒池不在接收新的執行緒,然後使用awaittermination通過返回值true判斷執行緒全部執行完成,這個方法更推薦使用,這個執行緒池任處於後台狀態,主線程依然是空閒的,走完執行緒池任務後才會執行下一段**

public static void main(string args) throws executionexception, interruptedexception 

exec.shutdown();

//請求關閉、發生超時或者當前執行緒中斷,無論哪乙個首先發生之後,都將導致阻塞,直到所有任務完成執行。

boolean flag = exec.awaittermination(1, timeunit.minutes);

if(flag)

}

執行緒池迴圈執行

using system using system.collections.generic using system.linq using system.text using system.threading public class lockobj 正處理佇列 public queuequeuep...

執行緒與執行緒池(一)

一.執行緒 當執行緒物件對建立後,即進入了新建狀態,如 thread t new mythread 就緒狀態 runnable 當呼叫執行緒物件的start 方法 t.start 執行緒即進入就緒狀態。處於就緒狀態的執行緒,只是說明此執行緒已經做好了準備,隨時等待cpu排程執行,並不是說執行了t.s...

執行緒池系列 一 執行緒池簡介

執行緒池主要解決了倆個問題 一是避免了頻繁建立銷毀執行緒所帶來的開銷,達到了執行緒復用的目的 二是執行緒池提供了一種資源限制和管理的手段,使用者可以通過一些引數來定製化執行緒 public class threadpoolexecutor extends abstractexecutorservic...