在網上找到了乙個自定義執行緒池的例子來代替書中的例子。
原著位置:http://www.cnblogs.com/alexander-lee/archive/2009/10/31/1593647.html
1 自定義執行緒池設計概要說明:
1 taskpool類(自定義執行緒池類)
1 定義:private dictionarypublicpool
說明:所有執行緒
執行:建構函式初始化執行緒例項時追加;addtaskitem內,空閒執行緒(freequeue)不存在時追加
2 定義:private queuefreequeue
說明:空閒執行緒佇列
執行:建構函式內,初始化執行緒例項時追加;addtaskitem內,空閒執行緒(freequeue)不存在時追加
3 定義:private dictionaryworking
說明:正在工作的執行緒
執行:addtaskitem方法內,工作執行緒追加到working佇列內,然後執行工作執行緒。
4 定義:private queuewaitlist
說明:等待執行工作佇列
執行:addtaskitem方法內,當前執行緒數=最大執行緒數時,waitlist佇列內工作執行緒追加。
當每個工作執行緒結束時,觸發workcomplete事件,【等待執行工作佇列】內的工作執行緒追加到工作的執行緒佇列內。
1.2 工作執行緒追加到threadpool內的方法:
addtaskitem
2 task類(執行緒任務包裝類)通過task建構函式和active方法來執行working工作執行緒上的執行緒。
3 waititem類(等待佇列儲存任務方法和任務方法引數的資訊)
2 類圖如下:
3 **如下:
tashpool類 (自定義執行緒池容器類)
task類 (工作執行緒包裝類)
waititem類(等待執行緒佇列包裝類)
客戶端執行
自定義執行緒池
有些時候 jdk自帶的cachedthreadpool fixedthreadpool等執行緒池完成不了我們業務的需求時 可以用threadpoolexecutorg構造自定義的執行緒池。public class usethreadpoolexecutor1 這段 會首先執行任務1,然後把2 3 4...
自定義執行緒池
建立執行緒池方法 儘管executors提供了四種執行緒池建立的方式,但為了實現某些特定的需求,可以自己建立執行緒池。如在阿里的程式設計規範使用executors建立執行緒時,一般會報錯,並提示以下資訊 執行緒池不允許使用executors去建立,而是通過threadpoolexecutor的方式,...
自定義執行緒池
自定義執行緒池建立api 執行緒池建立通過juc的介面 executor 實現,平時我們使用其實現類 threadpoolexecutor 實現自定義執行緒池。常用建構函式 public threadpoolexecutor int corepoolsize,int maximumpoolsize,...