我把執行緒池引數給做個形象的比喻,執行緒池 就好比乙個水池,池底有n個小洞,就是核心執行緒數量n,最大執行緒數量就是這個池子能裝多少個桌球,等待佇列 就是池子之外的一塊地方,有的佇列是有界的,就是大小固定,有的是無界的,大小不固定。
任務 就是把桌球丟到池子中,讓桌球從池底的小洞掉下去。相當於執行緒的執行。
我們用上面的例子來說明這個問題 ,當掉入池子中桌球小於池底的小洞數量的時候,這些桌球就會掉入洞中,假設掉入是需要一定的時間的,慢慢掉入,(模擬任務的執行時間)。持續的桌球不斷的從外面掉入池子中,直到底部已經沒有空閒的小洞可以塞了,這個時候不在洞中的桌球不能放在池中,只能放在外面的那塊空地等待,如果那塊空地的面積是足夠大的,多少球都放的下,這種情況下,新進來的球來多少都放在那塊空地上等待。如果那塊空地大小有限,只能放固定數量的桌球。當空地放滿桌球的時候,新來的桌球放不下了並且池子還沒滿(沒滿的意思就是核心執行緒數小於最大執行緒數量),這個時候才可以放入水池中。整個過程中 如果任何新進來的桌球發現池底的小球穿過了小洞,小洞變成了空洞,這個時候新進來的桌球可以直接放到小洞中去。
假設我們建立了乙個核心執行緒數為2 最大執行緒數為4 ,佇列長度為5的有界佇列 執行緒池。
注意要點:最大執行緒數 用的著的時候是 佇列大小固定,並且佇列已經滿了,還有任務進來才有用,否則無用,
因為執行緒進來的順序是 先建立核心執行緒數量的執行緒,然後就進入佇列等待 ,佇列滿了 ,才進入執行緒池(最大執行緒大於核心執行緒數)
執行緒池引數
由於系統頻繁的建立和銷毀執行緒,因而使用執行緒池讓建立的執行緒進行復用 1.corepoolsize 指定了執行緒池中的執行緒數量 2.maximumpoolsize 執行緒池中最大執行緒數量 3.keepalivetime 當執行緒池中的執行緒數超過corepoolsize,多餘的空閒的執行緒的存...
Java 執行緒池引數
threadpoolexecutor是執行緒池的真正實現,他通過構造方法的一系列引數 不同的構造方法 來構成不同配置的執行緒池。拒絕策略,是乙個介面,可以自己實現自定義的拒絕策略。當執行緒數已經達到maxpoolsize,切佇列已滿,會拒絕新任務 當執行緒池被呼叫shutdown 後,會等待執行緒池...
執行緒池引數解析
public threadpoolexecutor int corepoolsize,int maximumpoolsize,long keepalivetime,timeunit unit,blockingqueueworkqueue 引數的意義 corepoolsize 核心池的大小,在建立了執...