jdk執行緒池詳解

2021-07-09 03:32:00 字數 1538 閱讀 5201

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...