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

Java concurrency線程池之線程池原理(三)_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

 更新時(shí)間:2017年06月15日 15:02:19   作者:skywang12345  
這篇文章主要為大家詳細(xì)介紹了Java concurrency線程池之線程池原理第三篇,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

線程有5種狀態(tài):新建狀態(tài),就緒狀態(tài),運(yùn)行狀態(tài),阻塞狀態(tài),死亡狀態(tài)。線程池也有5種狀態(tài);然而,線程池不同于線程,線程池的5種狀態(tài)是:Running, SHUTDOWN, STOP, TIDYING, TERMINATED。

線程池狀態(tài)定義代碼如下:

private final AtomicInteger ctl = new AtomicInteger(ctlOf(RUNNING, 0));
private static final int COUNT_BITS = Integer.SIZE - 3;
private static final int CAPACITY = (1 << COUNT_BITS) - 1;

private static final int RUNNING = -1 << COUNT_BITS;
private static final int SHUTDOWN = 0 << COUNT_BITS;
private static final int STOP = 1 << COUNT_BITS;
private static final int TIDYING = 2 << COUNT_BITS;
private static final int TERMINATED = 3 << COUNT_BITS;
private static int ctlOf(int rs, int wc) { return rs | wc; }

說明:

ctl是一個(gè)AtomicInteger類型的原子對(duì)象。ctl記錄了"線程池中的任務(wù)數(shù)量"和"線程池狀態(tài)"2個(gè)信息。
ctl共包括32位。其中,高3位表示"線程池狀態(tài)",低29位表示"線程池中的任務(wù)數(shù)量"。

RUNNING    -- 對(duì)應(yīng)的高3位值是111。
SHUTDOWN   -- 對(duì)應(yīng)的高3位值是000。
STOP       -- 對(duì)應(yīng)的高3位值是001。
TIDYING    -- 對(duì)應(yīng)的高3位值是010。
TERMINATED -- 對(duì)應(yīng)的高3位值是011。 

線程池各個(gè)狀態(tài)之間的切換如下圖所示:

1. RUNNING

(01) 狀態(tài)說明:線程池處在RUNNING狀態(tài)時(shí),能夠接收新任務(wù),以及對(duì)已添加的任務(wù)進(jìn)行處理。
(02) 狀態(tài)切換:線程池的初始化狀態(tài)是RUNNING。換句話說,線程池被一旦被創(chuàng)建,就處于RUNNING狀態(tài)!
道理很簡(jiǎn)單,在ctl的初始化代碼中(如下),就將它初始化為RUNNING狀態(tài),并且"任務(wù)數(shù)量"初始化為0。

private final AtomicInteger ctl = new AtomicInteger(ctlOf(RUNNING, 0));

 2. SHUTDOWN

(01) 狀態(tài)說明:線程池處在SHUTDOWN狀態(tài)時(shí),不接收新任務(wù),但能處理已添加的任務(wù)。
(02) 狀態(tài)切換:調(diào)用線程池的shutdown()接口時(shí),線程池由RUNNING -> SHUTDOWN。

 3. STOP

(01) 狀態(tài)說明:線程池處在STOP狀態(tài)時(shí),不接收新任務(wù),不處理已添加的任務(wù),并且會(huì)中斷正在處理的任務(wù)。
(02) 狀態(tài)切換:調(diào)用線程池的shutdownNow()接口時(shí),線程池由(RUNNING or SHUTDOWN ) -> STOP。

 4. TIDYING

(01) 狀態(tài)說明:當(dāng)所有的任務(wù)已終止,ctl記錄的"任務(wù)數(shù)量"為0,線程池會(huì)變?yōu)門IDYING狀態(tài)。當(dāng)線程池變?yōu)門IDYING狀態(tài)時(shí),會(huì)執(zhí)行鉤子函數(shù)terminated()。terminated()在ThreadPoolExecutor類中是空的,若用戶想在線程池變?yōu)門IDYING時(shí),進(jìn)行相應(yīng)的處理;可以通過重載terminated()函數(shù)來實(shí)現(xiàn)。
(02) 狀態(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

(01) 狀態(tài)說明:線程池徹底終止,就變成TERMINATED狀態(tài)。
(02) 狀態(tài)切換:線程池處在TIDYING狀態(tài)時(shí),執(zhí)行完terminated()之后,就會(huì)由 TIDYING -> TERMINATED。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • java.lang.IllegalStateException:方法有太多主體參數(shù)問題

    java.lang.IllegalStateException:方法有太多主體參數(shù)問題

    這篇文章主要介紹了java.lang.IllegalStateException:方法有太多主體參數(shù)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • springBoot集成Elasticsearch 報(bào)錯(cuò) Health check failed的解決

    springBoot集成Elasticsearch 報(bào)錯(cuò) Health check failed的解決

    這篇文章主要介紹了springBoot集成Elasticsearch 報(bào)錯(cuò) Health check failed的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • SpringBoot整合log4j日志與HashMap的底層原理解析

    SpringBoot整合log4j日志與HashMap的底層原理解析

    這篇文章主要介紹了SpringBoot整合log4j日志與HashMap的底層原理,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • Spring @Primary和@Qualifier注解原理解析

    Spring @Primary和@Qualifier注解原理解析

    這篇文章主要介紹了Spring @Primary和@Qualifier注解原理解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • 使用Springboot打成jar包thymeleaf的問題

    使用Springboot打成jar包thymeleaf的問題

    這篇文章主要介紹了使用Springboot打成jar包thymeleaf的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Java class文件格式總結(jié)_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    Java class文件格式總結(jié)_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    這篇文章主要介紹了Java class文件格式總結(jié)的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的的朋友參考下吧
    2017-06-06
  • Java大小寫轉(zhuǎn)換及一些常見的注意事項(xiàng)詳解

    Java大小寫轉(zhuǎn)換及一些常見的注意事項(xiàng)詳解

    這篇文章主要介紹了Java大小寫轉(zhuǎn)換及一些常見的注意事項(xiàng)的相關(guān)資料,Java提供了多種方法進(jìn)行大小寫轉(zhuǎn)換,包括String類的toLowerCase和toUpperCase方法,以及Character類的toLowerCase和toUpperCase方法,需要的朋友可以參考下
    2025-02-02
  • spring?webClient配置及使用簡(jiǎn)單代碼示例

    spring?webClient配置及使用簡(jiǎn)單代碼示例

    WebClient是Spring框架5.0引入的基于響應(yīng)式編程模型的HTTP客戶端,它提供一種簡(jiǎn)便的方式來處理HTTP請(qǐng)求和響應(yīng),支持異步和非阻塞式的請(qǐng)求和響應(yīng)處理,下面這篇文章主要給大家介紹了關(guān)于spring?webClient配置及使用的相關(guān)資料,需要的朋友可以參考下
    2024-03-03
  • 基于jdk1.8的Java源碼詳解 Integer

    基于jdk1.8的Java源碼詳解 Integer

    這篇文章主要介紹了基于jdk1.8的Java源碼詳解 Integer,Integer是int的Warpper類,是面向?qū)ο蟮募碠OP的對(duì)象類型,,需要的朋友可以參考下
    2019-06-06
  • Java中BeanUtils.copyProperties的11個(gè)坑總結(jié)

    Java中BeanUtils.copyProperties的11個(gè)坑總結(jié)

    我們?nèi)粘i_發(fā)中,經(jīng)常涉及到DO、DTO、VO對(duì)象屬性拷貝賦值,很容易想到org.springframework.beans.BeanUtils的copyProperties,它會(huì)自動(dòng)通過反射機(jī)制獲取源對(duì)象和目標(biāo)對(duì)象的屬性,pyProperties,會(huì)有好幾個(gè)坑呢,本文將給大家總結(jié)一下遇到的坑,需要的朋友可以參考下
    2023-05-05

最新評(píng)論

措美县| 淮北市| 宕昌县| 涿州市| 砀山县| 镇雄县| 固原市| 祁连县| 丁青县| 谢通门县| 南漳县| 普洱| 陇西县| 海安县| 二连浩特市| 门头沟区| 遂平县| 陇南市| 监利县| 德化县| 大城县| 古浪县| 东方市| 佛坪县| 隆回县| 漠河县| 连山| 柘荣县| 天津市| 永安市| 岫岩| 长宁县| 青浦区| 个旧市| 乐平市| 庄浪县| 临安市| 扎囊县| 凉城县| 景谷| 金门县|