Executor框架

一,Executor,ExecutorService,Executors
  • 1,Executors
    java.util.concurrent提供了一種靈活的線程池實現作為Executor框架的一部分.在java類庫中,任務執(zhí)行的主要抽象不是Thread,而是Executor.
    ** Executor提供一種將任務提交與每個任務將如何運行的機制(包括線程使用的細節(jié)裆针、調度等)分離開來的方法**功偿。通常使用 Executor 而不是顯式地創(chuàng)建線程筝尾。
public interface Executor {
    void execute(Runnable command);
}
  • 2,ExecutorService
    為了解決執(zhí)行服務的生命周期,ExecutorService接口擴展了Executor接口,添加了一些用于生命周期管理的方法
public interface ExecutorService extends Executor {
  //平緩的關閉過程:不接受新的任務,同時等待已經提交的任務完成(包括哪些還沒有開始執(zhí)行的任務
    void shutdown();
//執(zhí)行粗暴的關閉過程:他將嘗試取消所有運行中的任務,并且不再啟動隊列中尚未開始執(zhí)行的任務
    List<Runnable> shutdownNow();

    boolean isShutdown();

    boolean isTerminated();

    boolean awaitTermination(long timeout, TimeUnit unit)
        throws InterruptedException;

    <T> Future<T> submit(Callable<T> task);
 
    <T> Future<T> submit(Runnable task, T result);

    Future<?> submit(Runnable task);
  
    <T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks)
        throws InterruptedException;

    <T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks,
                                  long timeout, TimeUnit unit)
        throws InterruptedException;

    <T> T invokeAny(Collection<? extends Callable<T>> tasks)
        throws InterruptedException, ExecutionException;

    <T> T invokeAny(Collection<? extends Callable<T>> tasks,
                    long timeout, TimeUnit unit)
        throws InterruptedException, ExecutionException, TimeoutException;
}
  • 3,Executors
    Executor框架的一個工具類
Executor框架.png
二,線程池
  • newFixedThreadPool
    newFixedThreadPool創(chuàng)建一個固定長度的線程池,每當提交一個任務時就創(chuàng)建一個線程,直到達到線程池的最大數量,這時線程池的規(guī)模將不再變化.如果某個線程由于發(fā)生了未預期的Excepiton而結束,那么線程池會補充一個新的線程

  • newCachedThreadPool
    newCachedThreadPool將創(chuàng)建一個可緩存的線程池,如果線程池的當前規(guī)模超過了處理請求時,那么將回收空閑的線程,而當需求增加時,則可以添加新的線程,線程池的規(guī)模不存在任何限制

  • newSingleThreadExecutor
    newSingleThreadExecutor是一個單線程的Executor,他創(chuàng)建單個工作者線程來執(zhí)行任務,如果這個線程異常結束,會創(chuàng)建另一個線程來替代. newSingleThreadExecutor確保按照任務在隊列中的順序來串行執(zhí)行

  • newScheduledThreadPool
    newScheduledThreadPool創(chuàng)建了一個固定長度的線程池,而且以延遲或定時的方式來執(zhí)行任務.

參考:
<<java編發(fā)編程實戰(zhàn)>>

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末柒爸,一起剝皮案震驚了整個濱河市堰酿,隨后出現的幾起案子奠滑,更是在濱河造成了極大的恐慌宵蕉,老刑警劉巖耕赘,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異贞绳,居然都是意外死亡谷醉,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進店門冈闭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來俱尼,“玉大人,你說我怎么就攤上這事萎攒∮霭耍” “怎么了?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵耍休,是天一觀的道長刃永。 經常有香客問我,道長羊精,這世上最難降的妖魔是什么斯够? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮喧锦,結果婚禮上读规,老公的妹妹穿的比我還像新娘。我一直安慰自己燃少,他們只是感情好束亏,可當我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著阵具,像睡著了一般枪汪。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上怔昨,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天雀久,我揣著相機與錄音,去河邊找鬼趁舀。 笑死赖捌,一個胖子當著我的面吹牛,可吹牛的內容都是我干的矮烹。 我是一名探鬼主播越庇,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼奉狈!你這毒婦竟也來了卤唉?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤仁期,失蹤者是張志新(化名)和其女友劉穎桑驱,沒想到半個月后竭恬,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡熬的,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年痊硕,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片押框。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡岔绸,死狀恐怖,靈堂內的尸體忽然破棺而出橡伞,到底是詐尸還是另有隱情盒揉,我是刑警寧澤,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布兑徘,位于F島的核電站刚盈,受9級特大地震影響,放射性物質發(fā)生泄漏道媚。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一翘县、第九天 我趴在偏房一處隱蔽的房頂上張望最域。 院中可真熱鬧,春花似錦锈麸、人聲如沸镀脂。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽薄翅。三九已至,卻和暖如春氓奈,著一層夾襖步出監(jiān)牢的瞬間翘魄,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工舀奶, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留暑竟,地道東北人。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓育勺,卻偏偏與公主長得像但荤,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子涧至,可洞房花燭夜當晚...
    茶點故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內容