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