ExecutorService

ExecutorService擴(kuò)展和實(shí)現(xiàn)Executor谨湘。

java 線程池的5種狀態(tài)

  1. RUNNING 線程池處在RUNNING狀態(tài)時(shí)拨脉,能夠接收新任務(wù),以及對(duì)已添加的任務(wù)進(jìn)行處理

  2. SHUTDOWN 線程池處在SHUTDOWN狀態(tài)時(shí)帖池,不接收新任務(wù)年扩,但能處理已添加的任務(wù);調(diào)用線程池的shutdown()接口時(shí)盾剩,線程池由RUNNING -> SHUTDOWN

  3. STOP 線程池處在STOP狀態(tài)時(shí)雷激,不接收新任務(wù),不處理已添加的任務(wù)彪腔,并且會(huì)中斷正在處理的任務(wù);調(diào)用線程池的shutdownNow()接口時(shí)侥锦,線程池由(RUNNING or SHUTDOWN ) -> STOP

  4. TIDYING 當(dāng)所有的任務(wù)已終止,ctl記錄的”任務(wù)數(shù)量”為0德挣,線程池會(huì)變?yōu)門(mén)IDYING狀態(tài);當(dāng)線程池在SHUTDOWN狀態(tài)下恭垦,阻塞隊(duì)列為空并且線程池中執(zhí)行的任務(wù)也為空時(shí),就會(huì)由 SHUTDOWN -> TIDYING格嗅。當(dāng)線程池在STOP狀態(tài)下番挺,線程池中執(zhí)行的任務(wù)為空時(shí),就會(huì)由STOP -> TIDYING

  5. TERMINATED 線程池徹底終止屯掖,就變成TERMINATED狀態(tài)玄柏。 線程池處在TIDYING狀態(tài)時(shí)浑娜,執(zhí)行完terminated()之后豺型,就會(huì)由 TIDYING -> TERMINATED

Java線程的6種狀態(tài)及切換

  1. 初始(NEW):新創(chuàng)建了一個(gè)線程對(duì)象,但還沒(méi)有調(diào)用start()方法。

  2. 運(yùn)行(RUNNABLE):Java線程中將就緒(ready)和運(yùn)行中(running)兩種狀態(tài)籠統(tǒng)的稱(chēng)為“運(yùn)行”透且。線程對(duì)象創(chuàng)建后匕荸,其他線程(比如main線程)調(diào)用了該對(duì)象的start()方法懂昂。該狀態(tài)的線程位于可運(yùn)行線程池中净嘀,等待被線程調(diào)度選中,獲取CPU的使用權(quán)椎咧,此時(shí)處于就緒狀態(tài)(ready)玖详。就緒狀態(tài)的線程在獲得CPU時(shí)間片后變?yōu)檫\(yùn)行中狀態(tài)(running)。

  3. 阻塞(BLOCKED):表示線程阻塞于鎖勤讽。

  4. 等待(WAITING):進(jìn)入該狀態(tài)的線程需要等待其他線程做出一些特定動(dòng)作(通知或中斷)蟋座。

  5. 超時(shí)等待(TIMED_WAITING):該狀態(tài)不同于WAITING,它可以在指定的時(shí)間后自行返回脚牍。

  6. 終止(TERMINATED):表示該線程已經(jīng)執(zhí)行完畢向臀。

ExecutorService分析

public interface ExecutorService extends Executor{
      
      //1 調(diào)用方法前提交的任務(wù)會(huì)執(zhí)行
      //2 調(diào)用方法后在提交任務(wù)會(huì)被拒絕
      //3 ExecutorService已經(jīng)關(guān)閉了 調(diào)用沒(méi)有任何影響
      //4 所有線程執(zhí)行完當(dāng)前的任務(wù),ExecutorService才會(huì)真正關(guān)閉
      //5 線程池的狀態(tài)切換 SHUTDOWN
      void shutdown();
      
      //1 嘗試停止所有正在執(zhí)行的任務(wù)
      //2 停止等待任務(wù)的處理
      //3 返回等待執(zhí)行的任務(wù)列表
      //4 線程池狀態(tài)設(shè)置STOP狀態(tài)
      //5 通過(guò)Thread的 interrupt方法停止執(zhí)行的任務(wù)莫矗, 所以任何無(wú)法響應(yīng)中斷的任務(wù)都可能永遠(yuǎn)不會(huì)終止飒硅。
      List<Runnable> shutdownNow();
      
      //Returns true if this executor has been shut down
      boolean isShutdown();
      
      // return true if all tasks have completed following shut down.如果在調(diào)用這個(gè)方法之前,沒(méi)有調(diào)用過(guò)shutdown 或shutdownNow作谚,永遠(yuǎn)不會(huì)反悔true
      boolean isTerminated();
      
      //當(dāng)前線程阻塞  
      //直到shutdown后等所有在執(zhí)行的任務(wù)執(zhí)行完
      //等超時(shí)時(shí)間到
      //或者線程被中斷   
      boolean awaitTermination(long timeout, TimeUnit unit)
        throws InterruptedException;
        
      //Future get方法可以獲得任務(wù)成功后的值
      //如果想阻塞等待任務(wù)執(zhí)行的結(jié)果,可以result = exec.submit(aCallable).get();
      <T> Future<T> submit(Callable<T> task);
      
      //任務(wù)成功后 get可以獲取返回值
      <T> Future<T> submit(Runnable task, T result);
      
      // 任務(wù)成功后 get返回null
      Future<?> submit(Runnable task);
      
      //堵塞 等所有任務(wù)執(zhí)行完成后統(tǒng)一返回
       <T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks)
        throws InterruptedException;
        
     //堵塞 等所有任務(wù)執(zhí)行完成后統(tǒng)一返回庵芭, 設(shè)置超時(shí)時(shí)間  是所以任務(wù)一起的超時(shí)時(shí)間妹懒,超時(shí)會(huì)取消所有沒(méi)有執(zhí)行完的任務(wù)
      <T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks,
                                  long timeout, TimeUnit unit)
        throws InterruptedException;
      
      //執(zhí)行給定的任務(wù),只要有一個(gè)任務(wù)成功執(zhí)行完成双吆,就返回結(jié)果眨唬。不包過(guò)異常。
      // 正常返回和異常返回后好乐,沒(méi)有完成的任務(wù)將被取消
       <T> T invokeAny(Collection<? extends Callable<T>> tasks)
        throws InterruptedException, ExecutionException;
        
        //同上  增加一個(gè)超時(shí)的時(shí)間
        <T> T invokeAny(Collection<? extends Callable<T>> tasks,
                    long timeout, TimeUnit unit)
        throws InterruptedException, ExecutionException, TimeoutException;
  }
  

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末匾竿,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子蔚万,更是在濱河造成了極大的恐慌岭妖,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,509評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件反璃,死亡現(xiàn)場(chǎng)離奇詭異昵慌,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)淮蜈,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén)斋攀,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人梧田,你說(shuō)我怎么就攤上這事淳蔼〔嗾海” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,875評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵鹉梨,是天一觀的道長(zhǎng)闺魏。 經(jīng)常有香客問(wèn)我,道長(zhǎng)俯画,這世上最難降的妖魔是什么析桥? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,441評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮艰垂,結(jié)果婚禮上泡仗,老公的妹妹穿的比我還像新娘。我一直安慰自己猜憎,他們只是感情好娩怎,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,488評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著胰柑,像睡著了一般截亦。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上柬讨,一...
    開(kāi)封第一講書(shū)人閱讀 51,365評(píng)論 1 302
  • 那天崩瓤,我揣著相機(jī)與錄音,去河邊找鬼踩官。 笑死却桶,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蔗牡。 我是一名探鬼主播颖系,決...
    沈念sama閱讀 40,190評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼辩越!你這毒婦竟也來(lái)了嘁扼?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,062評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤黔攒,失蹤者是張志新(化名)和其女友劉穎趁啸,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體亏钩,經(jīng)...
    沈念sama閱讀 45,500評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡莲绰,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,706評(píng)論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了姑丑。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蛤签。...
    茶點(diǎn)故事閱讀 39,834評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖栅哀,靈堂內(nèi)的尸體忽然破棺而出震肮,到底是詐尸還是另有隱情称龙,我是刑警寧澤,帶...
    沈念sama閱讀 35,559評(píng)論 5 345
  • 正文 年R本政府宣布戳晌,位于F島的核電站鲫尊,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏沦偎。R本人自食惡果不足惜疫向,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,167評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望豪嚎。 院中可真熱鬧搔驼,春花似錦、人聲如沸侈询。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,779評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)扔字。三九已至囊嘉,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間革为,已是汗流浹背扭粱。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,912評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留篷角,地道東北人焊刹。 一個(gè)月前我還...
    沈念sama閱讀 47,958評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像恳蹲,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子俩滥,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,779評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容