6 自定義執行緒池 執行緒應用程式的伸縮

2021-05-10 18:56:57 字數 973 閱讀 3111

在網上找到了乙個自定義執行緒池的例子來代替書中的例子。

原著位置: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,...