最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java?線程池狀態(tài)及狀態(tài)轉(zhuǎn)換

 更新時間:2022年05月10日 09:31:53   作者:??Java中文社群????  
這篇文章主要介紹了java?線程池狀態(tài)及狀態(tài)轉(zhuǎn)換,Java里線程池的狀態(tài)和線程的狀態(tài)是完全不同的,具體有幾種狀態(tài)和哪些不同點,下面文章詳細介紹,需要的小伙伴可以參考一下

前言:

在 Java 中,線程池的狀態(tài)和線程的狀態(tài)是完全不同的,

線程有 6 種狀態(tài):

  • NEW:初始化狀態(tài)、
  • RUNNABLE:可運行/運行狀態(tài)、
  • BLOCKED:阻塞狀態(tài)、
  • WAITING:無時限等待狀態(tài)
  • TIMED_WAITING:有時限等待狀態(tài)和
  • TERMINATED:終止狀態(tài)。

而線程池的狀態(tài)有以下 5 種:

  • RUNNING:運行狀態(tài),線程池創(chuàng)建好之后就會進入此狀態(tài),如果不手動調(diào)用關(guān)閉方法,那么線程池在整個程序運行期間都是此狀態(tài)。
  • SHUTDOWN:關(guān)閉狀態(tài),不再接受新任務(wù)提交,但是會將已保存在任務(wù)隊列中的任務(wù)處理完。
  • STOP:停止狀態(tài),不再接受新任務(wù)提交,并且會中斷當前正在執(zhí)行的任務(wù)、放棄任務(wù)隊列中已有的任務(wù)。
  • TIDYING:整理狀態(tài),所有的任務(wù)都執(zhí)行完畢后(也包括任務(wù)隊列中的任務(wù)執(zhí)行完),當前線程池中的活動線程數(shù)降為 0 時的狀態(tài)。到此狀態(tài)之后,會調(diào)用線程池的 terminated() 方法。
  • TERMINATED:銷毀狀態(tài),當執(zhí)行完線程池的 terminated() 方法之后就會變?yōu)榇藸顟B(tài)。

這 5 種狀態(tài)可以在 ThreadPoolExecutor 源碼中找到,如下圖所示: 

線程池狀態(tài)轉(zhuǎn)移

線程池的狀態(tài)轉(zhuǎn)移有兩條路徑:

  • 當調(diào)用 shutdown() 方法時,線程池的狀態(tài)會從 RUNNING 到 SHUTDOWN,再到 TIDYING,最后到 TERMENATED 銷毀狀態(tài)。
  • 當調(diào)用 shutdownNow() 方法時,線程池的狀態(tài)會從 RUNNING 到 STOP,再到 TIDYING,最后到 TERMENATED 銷毀狀態(tài)。

線程狀態(tài)轉(zhuǎn)換的流程如下圖所示: 

terminated方法

線程池中的 terminated() 方法,也就是線程池從 TIDYING 轉(zhuǎn)換到 TERMINATED 狀態(tài)時調(diào)用的方法,默認是空的,

它的源碼如下: 

我們可以在創(chuàng)建線程池的時候重寫 terminated() 方法,具體實現(xiàn)代碼如下:

import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;

public class ThreadPoolStateTransition {
    public static void main(String[] args) throws InterruptedException {
        // 創(chuàng)建線程池
        ThreadPoolExecutor threadPool = new ThreadPoolExecutor(10, 10, 0L,
                TimeUnit.SECONDS, new LinkedBlockingQueue<>(100)) {
            @Override
            protected void terminated() {
                super.terminated();
                System.out.println("執(zhí)行 terminated() 方法");
            }
        };
        // 關(guān)閉線程池
        threadPool.shutdown();
        // 等待線程池執(zhí)行完再退出
        while (!threadPool.awaitTermination(1, TimeUnit.SECONDS)) {
            System.out.println("線程池正在運行中");
        }
    }
}

總結(jié)

線程池的狀態(tài)總共有 5 種:RUNNING:運行狀態(tài)、SHUTDOWN:關(guān)閉狀態(tài)、STOP:停止狀態(tài)、TIDYING:整理狀態(tài)和 TERMINATED:銷毀狀態(tài)。默認情況下,如果不調(diào)用關(guān)閉方法,線程池會一直處于 RUNNING 狀態(tài),而線程池狀態(tài)的轉(zhuǎn)移有兩個路徑:當調(diào)用 shutdown() 方法時,線程池的狀態(tài)會從 RUNNING 到 SHUTDOWN,再到 TIDYING,最后到 TERMENATED 銷毀狀態(tài);當調(diào)用 shutdownNow() 方法時,線程池的狀態(tài)會從 RUNNING 到 STOP,再到 TIDYING,最后到 TERMENATED 銷毀狀態(tài)。

到此這篇關(guān)于java 線程池狀態(tài)及狀態(tài)轉(zhuǎn)換的文章就介紹到這了,更多相關(guān)Java線程池狀態(tài)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解Java?ThreadPoolExecutor的拒絕策略

    詳解Java?ThreadPoolExecutor的拒絕策略

    這篇文章主要介紹了Java?ThreadPoolExecutor的拒絕策略,本文對于線程的池的幾種策略進行詳細的講解,在實際的生產(chǎn)中需要集合相關(guān)的場景來選擇合適的拒絕策略,需要的朋友可以參考下
    2022-08-08
  • java檢查數(shù)組是否有重復(fù)元素的方法

    java檢查數(shù)組是否有重復(fù)元素的方法

    這篇文章主要介紹了java檢查數(shù)組是否有重復(fù)元素的方法,涉及java針對數(shù)組元素的操作技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • Java中HashMap和HashTable區(qū)別

    Java中HashMap和HashTable區(qū)別

    HashMap和Hashtable都是Java常見的基于哈希表實現(xiàn)的Map接口的實現(xiàn)類,本文主要介紹了Java中HashMap和HashTable區(qū)別,具有一定的參考價值,感興趣的可以了解一下
    2023-11-11
  • Java操作excel的三種常見方法實例

    Java操作excel的三種常見方法實例

    這篇文章主要給大家介紹了關(guān)于Java操作excel的三種常見方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • spring的幾個重要類和接口(詳解)

    spring的幾個重要類和接口(詳解)

    下面小編就為大家?guī)硪黄猻pring的幾個重要類和接口(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-04-04
  • Java實現(xiàn)簡單汽車租賃系統(tǒng)

    Java實現(xiàn)簡單汽車租賃系統(tǒng)

    這篇文章主要為大家詳細介紹了Java實現(xiàn)簡單汽車租賃系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • java 字節(jié)流和字符流的區(qū)別詳解

    java 字節(jié)流和字符流的區(qū)別詳解

    這篇文章主要介紹了java 字節(jié)流和字符流的區(qū)別詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-09-09
  • Spring Boot 在啟動時進行配置文件加解密的方法詳解

    Spring Boot 在啟動時進行配置文件加解密的方法詳解

    這篇文章主要介紹了Spring Boot 在啟動時進行配置文件加解密的方法,本文通過實例給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-06-06
  • 通過自定制LogManager實現(xiàn)程序完全自定義的logger

    通過自定制LogManager實現(xiàn)程序完全自定義的logger

    本章主要闡述怎么完全定制化LogManager來實現(xiàn)應(yīng)用程序完全自定制的logger,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-03-03
  • Springmvc 4.x利用@ResponseBody返回Json數(shù)據(jù)的方法

    Springmvc 4.x利用@ResponseBody返回Json數(shù)據(jù)的方法

    這篇文章主要介紹了Springmvc 4.x利用@ResponseBody返回Json數(shù)據(jù)的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-04-04

最新評論

普宁市| 兰溪市| 浑源县| 平江县| 邵阳市| 安阳市| 府谷县| 池州市| 高陵县| 巴彦淖尔市| 宜春市| 德化县| 会同县| 康马县| 军事| 缙云县| 江口县| 鹤庆县| 南投县| 普陀区| 阿拉善盟| 池州市| 玉屏| 栾城县| 泽州县| 肇源县| 阳新县| 文登市| 会东县| 景洪市| 福泉市| 平果县| 翁源县| 邹城市| 连州市| 扶沟县| 新巴尔虎右旗| 那曲县| 安仁县| 宣汉县| 广东省|