有些時候 jdk自帶的cachedthreadpool fixedthreadpool等執行緒池完成不了我們業務的需求時 可以用threadpoolexecutorg構造自定義的執行緒池。
public class usethreadpoolexecutor1
}這段**會首先執行任務1,然後把2 3 4放入佇列中,當任務5來到時,佇列已滿,這時候會判斷是否達到了maxsize,如果還沒到,就會新開一條執行緒給5,如果滿了,就去執行myrejected的自定義操作
所以上述**執行順序是
run taskid =1
run taskid =5
當前被拒絕任務為:6
run taskid =2
run taskid =3
run taskid =4
值得注意的是,如果使用的是無界佇列,由於佇列永遠不會滿,所以永遠不會建立執行緒,執行緒會一直是coresize,不會達到maxsize
自定義執行緒池
建立執行緒池方法 儘管executors提供了四種執行緒池建立的方式,但為了實現某些特定的需求,可以自己建立執行緒池。如在阿里的程式設計規範使用executors建立執行緒時,一般會報錯,並提示以下資訊 執行緒池不允許使用executors去建立,而是通過threadpoolexecutor的方式,...
自定義執行緒池
自定義執行緒池建立api 執行緒池建立通過juc的介面 executor 實現,平時我們使用其實現類 threadpoolexecutor 實現自定義執行緒池。常用建構函式 public threadpoolexecutor int corepoolsize,int maximumpoolsize,...
自定義執行緒池
版本一 usr bin env python coding utf 8 import queue import threading class threadpool object def init self,max num 20 self.queue queue.queue max num for ...