java多執行緒總結筆記2 執行緒池

2021-06-22 18:07:06 字數 2220 閱讀 3877

四種執行緒池

singlethreadexecutor:池中只有乙個工作者執行緒,按照任務的提交順序序列地執行所有任務。如果執行緒因為異常結束,則會有乙個新執行緒來替代它。

cachedthreadpool:新任務提交時,如果所有執行緒都在忙,就新建乙個執行緒,池中線程的數量沒有上限。乙個執行緒如果長時間(預設為1分鐘)沒幹活,就會被銷毀。

fixedthreadpool:池中線程數量有乙個可設定的上限。新任務提交時,如果所有執行緒都在忙,就新建乙個執行緒,如果執行緒數已達上限,任務就得排隊等待。有執行緒因為異常而結束時,會有新執行緒來替代它。

scheduledthreadpool:在fixedthreadpool的基礎上,支援延時執行和周期性地執行任務。

執行緒池的建立方法

執行緒池可以用executors類的靜態工廠方法來建立。

executorservice newsinglethreadexecutor():構造並返回乙個singlethreadexecutor執行緒池。

executorservice newcachedthreadpool():構造並返回乙個cachedthreadpool執行緒池。

executorservice newfixedthreadpool(int num):返回並構造乙個執行緒數上限為num的fixedthreadpool執行緒池。

scheduledexecutorservice newscheduledthreadpool(int num):返回並構造乙個執行緒數上限為num的scheduledthreadpool執行緒池。

執行緒池類(executorservice類和scheduledexecutorservice類)

executorservice是executor的子類,scheduledexecutorservice又是executorservice的子類。

executorservice類

void execute(runnable target):向執行緒池提交新任務target。

future<?> submit(runnable target):向執行緒池提交新任務target。返回值的get()方法會阻塞等待任務結果,如果是成功完成,則返回null.

void shutdown():不再允許新任務提交,把已經提交的任務執行完,然後關閉執行緒池。

listshutdownnow():強制立刻關閉執行緒池,正在執行的任務也不做了,正在排隊的任務也不做了,提交新任務也不可以了,返回正在排隊的任務。

boolean isshutdown():如果執行緒池已經不再接受新任務提交,也就是說已呼叫了shutdown或shutdownnow函式了,則返回true.

boolean isterminated():如果執行緒池已經徹底關閉,則返回true.

boolean awaittermination(long timeout, timeunit unit):如果想等待執行緒池e徹底關閉後再繼續往下走,可以使用e.awaittermination(timeout, unit),最長等待timeout。執行緒池徹底關閉時就會返回true,如果直到超時時也沒能徹底關閉,則返回false.

unit是時間單位,可取的值有:timeunit.days,timeunit.hours,timeunit.minutes,timeunit.seconds,timeunit.milliseconds,timeunit.microseconds,timeunit.nanoseconds.

scheduledexecutorservice類

scheduledfutureschedule(runnable target, long delay, timeunit unit):提交target任務,要求在delay後開始執行。

scheduledfutureschedule(runnable target, long initialdelay, long period, timeunit unit):提交target任務,要求在每個(initialdelay+period*k)時刻執行,如果任務執行時間大於period,則會推後後續的執行。如果某次執行時因異常退出,則後續的執行都將被取消。

scheduledfutureschedule(runnable target, long initialdelay, long delay, timeunit unit):提交target任務,要求在initialdelay後首次執行,每次執行完畢後過delay時間再次執行。如果某次執行因異常退出,則後續的執行都將被取消。



java多執行緒 執行緒池

執行緒池的狀態含義 執行緒池引數 執行緒池種類 使用樣例 executors工廠類 執行緒池的調優策略 上乙個文章說多執行緒的實現方法有四個,其中第四個有提到exectorservice介面與callable與runnable,futrue等的一起實現,exectorservice是執行緒的管理工具...

Java多執行緒2 執行緒池的使用

public class singlethread executor.execute runnable executor.shutdown public class fixedthreadpool catch exceptione executor.execute runnable executor...

JAVA多執行緒之 執行緒池

執行緒池顧名思義,就是乙個放置執行緒的池子。就跟資料庫連線池差不多。執行緒池通過對併發執行緒的控制,能有效的節省系統資源的浪費,提高系統的效能。學習執行緒池,先了解一下執行緒池的乙個基本結構 executor是乙個介面,其中只有乙個方法,就是execute方法。所以executor實際就是乙個執行緒...