public threadpoolexecutor(int
corepoolsize,//核心執行緒數
intmaximumpoolsize,//最大執行緒數
long
keepalivetime,//空閒時間
timeunit unit,//時間單位
blockingqueueworkqueue,//等待佇列
threadfactory threadfactory,//執行緒工廠
rejectedexecutionhandler handler)
public
void execute(runnablecommand)
if (isrunning(c) &&workqueue.offer(command))
else
if (!addworker(command,false))
reject(command);}
final
void runworker(workerw) catch (runtimeexceptionx) catch (error x) catch (throwable x) finally
} finally
}completedabruptly=
false;
} finally
}private runnable gettask()
boolean
timed
; // are workers subject to culling?
for (;;)
try catch (interruptedexception retry) }}
private
void processworkerexit(workerw,boolean
completedabruptly) finally
tryterminate();
intc = ctl.get();
if (runstatelessthan(c,stop))
addworker(null,false); }
}schedule 執行一次
scheduleatfixedrate 按照固定頻率多次執行
建立並執行乙個在給定初始延遲後首次啟用的定期操作,後續操作具有給定的週期;也就是將在
initialdelay 後開始執行,然後在
initialdelay+period 後執行,接著在
initialdelay + 2 * period 後執行,依此類推。如果任務的任何乙個執行遇到異常,則後續執行都會被取消。否則,只能通過執行程式的取消或終止方法來終止該任務。
如果此任務的任何乙個執行要花費比其週期更長的時間,則將推遲後續執行,但不會同時執行。
schedulewithfixeddelay 按照固定延時多次執行
建立並執行乙個在給定初始延遲後首次啟用的定期操作,隨後,在每一次執行終止和下一次執行開始之間都存在給定的延遲。如果任務的任一執行遇到異常,就會取消後續執行。否則,只能通過執行程式的取消或終止方法來終止該任務。
JDK 執行緒池
在jdk的4種執行緒池之前,先介紹一下執行緒池的幾個引數 固定執行緒池數量,核心執行緒數 最大執行緒數 任務佇列 linkedblockingqueue integer.max value 無界佇列 適用於同時處理固定任務數的場景.public static executorservice newf...
jdk執行緒池 Executor體系
提供了乙個執行緒佇列,佇列中儲存著所有等待狀態的執行緒。避免了建立與銷毀額外開銷,提高了響應的速度。executor 負責執行緒的使用與排程的根介面 只有乙個execute runnable 方法 executorservice 子介面 executorservice 繼承 executor,並宣告...
jdk執行緒池學習筆記
1.執行緒池的執行緒儲存在hashset中,處理流程 core pool blocking queue max pool reject policy 2.核心執行緒池一般不會 除非設定了allowcorethreadtimeout,執行緒空閒時處於駐留狀態 locksupport.park 3.ke...