對Executor的執行緒池框架的理解

2021-09-13 15:50:25 字數 1841 閱讀 8529

對executor的執行緒池框架的理解

1、使用執行緒池的好處:

減少執行緒建立、銷毀的開銷

穩定2、executor框架

架構:executor 執行器介面,該介面定義執行runnable任務的方式。

executorservice 該介面定義提供對executor的服務。

scheduledexecutorservice 定時排程介面。

abstractexecutorservice 執行框架抽象類。

threadpoolexecutor jdk中線程池的具體實現。

executors 執行緒池工廠類。

jdk內部提供了五種最常見的執行緒池。由executors類的五個靜態工廠方法建立。

newfixedthreadpool(…)

newsinglethreadexecutor(…)

newcachedthreadpool(…)

newscheduledthreadpool(…)

newsinglethreadscheduledexecutor()

3、threadpoolexecutor執行緒池類

public threadpoolexecutor(int var1, int var2, long var3, timeunit var5, blockingqueue var6, rejectedexecutionhandler var7)

var1:核心執行緒數

var2:最大執行緒數

var3:執行緒存貨時間。當執行緒數大於var1,那麼超時該時間的執行緒將會被終結。

var5:var3的時間單位

var6:阻塞佇列。

var7:rejectedexecutionhandler 拒絕策略

4、executorservice介面

future<?> submit(runnable task)

future submit(callable task)

runnable執行完後沒有結果。

callable 執行完後會有乙個future放回物件。解決了之前使用thread.join()(thread.join()的作用:讓父執行緒等待子執行緒結束之後才能繼續執行)判斷執行緒是否執行完的問題。

5、scheduledexecutorservice介面

解決了需要重複執行的任務的問題。

6、執行緒池的生命週期

啟動執行緒池

關閉執行緒池:shutdown()

shutdownnow()

7、future

future儲存非同步計算的結果,可以在我們執行任務時去做其他工作,並提供了以下幾個方法

獲取任務的結果,判斷任務是否完成,中斷任務

future的get方法很好的替代的了thread.join或thread,join(long millis)

future的get方法可以判斷程式**(任務)的執行是否超時,如:

trycatch(timeoutexception timeout)

8、futuretask

futuretask實現了runnablefuture介面,提供了即可以使用runnable來執行任務,又可以使用future執行任務並取得結果的構造器,所以可以利用futuretask去封裝runnable或callable物件,之後再submit任務

futuretask(callable callable)

futuretask(runnable runnable, v result)

實現:futuretask task = new futuretask(new callable

});thead thread = new thread(task);

thread.start();

執行緒池框架executor

eexecutor作為靈活且強大的非同步執行框架,其支援多種不同型別的任務執行策略,提供了一種標準的方法將任務的提交過程和執行過程解耦開發,基於生產者 消費者模式,其提交任務的執行緒相當於生產者,執行任務的執行緒相當於消費者,並用runnable來表示任務,executor的實現還提供了對生命週期的...

Executor框架中的執行緒池

執行緒池 使用執行緒池管理任務,比為每個任務建立執行緒的好處 1 執行緒池裡的執行緒可以復用,減少了執行緒建立和銷毀的資源開支。2 執行緒池裡一般存在一部分執行緒,處理任務時候不必去著急建立執行緒,可以提高響應性。3 合理設定執行緒池裡的執行緒,使伺服器既保持忙碌狀態,又不會因為執行緒過多產生資源競...

執行緒池 02 Executor框架

executor 二 executor 的組成 2 任務的執行 3 非同步計算的結果 三 executor 使用 四 executor 主要的類與介面的簡介 2 threadpoolexecutor 3 scheduledthreadpoolexecutor 定時任務類,這裡不討論 4 future...