1. 程式人生 > 其它 >執行緒池作用,幾個引數?

執行緒池作用,幾個引數?

執行緒頻繁建立其實很消耗資源,有了執行緒池,執行緒用完可以放入執行緒池中,降低了資源消耗。

public ThreadPoolExecutor(int corePoolSize,
int maximumPoolSize,
long keepAliveTime,
TimeUnit unit,
BlockingQueue<Runnable> workQueue) {
this(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue,
Executors.defaultThreadFactory(), defaultHandler);
}
1、corePoolSize執行緒池中的常駐核心執行緒數
2、maximumPoolSize:執行緒池能夠容納同時執行的最大執行緒數,此值大於等於1
3、keepAliveTime:多餘的空閒執行緒存活時間,當空間時間達到keepAliveTime值時,多餘的執行緒會被銷燬
直到剩下corePoolSize個執行緒為止。
預設情況下:只有當執行緒池中的執行緒數大於corePoolSize時keepAliveTime才會起作用,知道執行緒中的執行緒
數不大於corepoolSIze。
4、Unit:keepAliveTime的單位
5、WorkQueue:任務佇列,被提交但尚未被執行的任務
6、ThreadFactory:表示生成執行緒池中工作執行緒的執行緒工廠,使用者建立新執行緒,一搬用預設即可
7、Handler:拒絕策略,表示當執行緒佇列滿了並且工作執行緒大於等於執行緒池的最大執行緒數
(maximumPoolSize)時如何來拒絕請求執行的runnable的策略

當執行緒池中corePoolSize  使用完畢以後,多出來的任務就會進入快取佇列;

當快取佇列也存放滿了以後,還有大量的任務,這時將會建立執行緒池中持支的最大量的執行緒,然後執行快取佇列裡面的任務,而外面的任務進入快取佇列中;

當執行緒池中的執行緒達到最大時,快取佇列也存滿意後,這時該執行緒池將會執行拒絕策略,

搜尋

複製