成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Java線程池的工作原理,好處和注意事項

ZweiZhao / 1300人閱讀

摘要:線程池的工作原理一個線程池管理了一組工作線程,同時它還包括了一個用于放置等待執(zhí)行任務(wù)的任務(wù)隊列阻塞隊列。使用線程池可以對線程進行統(tǒng)一的分配和監(jiān)控。線程池的注意事項雖然線程池是構(gòu)建多線程應(yīng)用程序的強大機制,但使用它并不是沒有風(fēng)險的。

線程池的工作原理
一個線程池管理了一組工作線程, 同時它還包括了一個用于放置等待執(zhí)行

任務(wù)的任務(wù)隊列(阻塞隊列) 。

一個線程池管理了一組工作線程, 同時它還包括了一個用于放置等待執(zhí)行

任務(wù)的任務(wù)隊列(阻塞隊列) 。

默認情況下, 在創(chuàng)建了線程池后, 線程池中的線程數(shù)為 0。 當(dāng)任務(wù)提交給

線程池之后的處理策略如下:

1 如果此時線程池中的數(shù)量小于 corePoolSize(核心池的大小) , 即使線程池中的線程都處于空閑狀態(tài), 也要創(chuàng)建新的線程來處理被添加的任務(wù)(也就是每來一個任務(wù), 就要創(chuàng)建一個線程來執(zhí)行任務(wù)) 。
2 如果此時線程池中的數(shù)量大于等于 corePoolSize, 但是緩沖隊列workQueue 未滿, 那么任務(wù)被放入緩沖隊列, 則該任務(wù)會等待空閑線程將其取出去執(zhí)行。
3 如果此時線程池中的數(shù)量大于等于 corePoolSize , 緩 沖 隊 列workQueue 滿, 并且線程池中的數(shù)量小于 maximumPoolSize(線程池最大線程數(shù)) , 建新的線程來處理被添加的任務(wù)。
4 如果 此時 線程 池中 的數(shù)量 大 于 等 于 corePoolSize, 緩 沖 隊列workQueue 滿, 并且線程池中的數(shù)量等于 maximumPoolSize, 那么通過RejectedExecutionHandler 所指定的策略(任務(wù)拒絕策略)來處理此任務(wù)。也就是處理任務(wù)的優(yōu)先級為: 核心線程 corePoolSize、 任務(wù)隊列workQueue、 最大線程 maximumPoolSize, 如果三者都滿了, 使用handler 處理被拒絕的任務(wù)。

特別注意, 在 corePoolSize 和 maximumPoolSize 之間的線程數(shù)會被自動釋放。 當(dāng)線程池中線程數(shù)量大于 corePoolSize 時, 如果某線程空閑時間超過 keepAliveTime, 線程將被終止, 直至線程池中的線程數(shù)目不大于 corePoolSize。 這樣, 線程池可以動態(tài)的調(diào)整池中的線程數(shù)。

使用線程池的好處

1.通過重復(fù)利用已創(chuàng)建的線程, 減少在創(chuàng)建和銷毀線程上所花的時間以及系統(tǒng)資源的開銷。

2.提高響應(yīng)速度。 當(dāng)任務(wù)到達時, 任務(wù)可以不需要等到線程創(chuàng)建就可以立即行。

3.提高線程的可管理性。 使用線程池可以對線程進行統(tǒng)一的分配和監(jiān)控。

4.如果不使用線程池, 有可能造成系統(tǒng)創(chuàng)建大量線程而導(dǎo)致消耗完系統(tǒng)內(nèi)存。
線程池的注意事項

雖然線程池是構(gòu)建多線程應(yīng)用程序的強大機制, 但使用它并不是沒有風(fēng)險的。

(1) 線程池的大小。 多線程應(yīng)用并非線程越多越好, 需要根據(jù)系統(tǒng)運行的軟硬件環(huán)境以及應(yīng)用本身的特點決定線程池的大小。 一般來說, 如果代碼結(jié)構(gòu)合理的話, 線程數(shù)目與 CPU數(shù)量相適合即可。 如果線程運行時可能出現(xiàn)阻塞現(xiàn)象, 可相應(yīng)增加池的大??; 如有必要可采用自適應(yīng)算法來動態(tài)調(diào)整線程池的大小, 以提高 CPU 的有效利用率和系統(tǒng)的整體性能。

(2) 并發(fā)錯誤。 多線程應(yīng)用要特別注意并發(fā)錯誤, 要從邏輯上保證程序的正確性, 注意避免死鎖現(xiàn)象的發(fā)生。

(3) 線程泄漏。 這是線程池應(yīng)用中一個嚴重的問題, 當(dāng)任務(wù)執(zhí)行完畢而線程沒能返回池中就會發(fā)生線程泄漏現(xiàn)象。

學(xué)習(xí)交流群:669823128

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/70434.html

相關(guān)文章

  • 后端ing

    摘要:當(dāng)活動線程核心線程非核心線程達到這個數(shù)值后,后續(xù)任務(wù)將會根據(jù)來進行拒絕策略處理。線程池工作原則當(dāng)線程池中線程數(shù)量小于則創(chuàng)建線程,并處理請求。當(dāng)線程池中的數(shù)量等于最大線程數(shù)時默默丟棄不能執(zhí)行的新加任務(wù),不報任何異常。 spring-cache使用記錄 spring-cache的使用記錄,坑點記錄以及采用的解決方案 深入分析 java 線程池的實現(xiàn)原理 在這篇文章中,作者有條不紊的將 ja...

    roadtogeek 評論0 收藏0
  • Java中的線程

    摘要:中的線程池運用場景非常廣泛,幾乎所有的一步或者并發(fā)執(zhí)行程序都可以使用。代碼中如果執(zhí)行了方法,線程池會提前創(chuàng)建并啟動所有核心線程。線程池最大數(shù)量線程池允許創(chuàng)建的線程最大數(shù)量。被稱為是可重用固定線程數(shù)的線程池。 Java中的線程池運用場景非常廣泛,幾乎所有的一步或者并發(fā)執(zhí)行程序都可以使用。那么線程池有什么好處呢,以及他的實現(xiàn)原理是怎么樣的呢? 使用線程池的好處 在開發(fā)過程中,合理的使用線程...

    tomato 評論0 收藏0
  • 并發(fā)學(xué)習(xí)筆記 (6)

    摘要:每個通過網(wǎng)絡(luò)到達服務(wù)器的連接都被包裝成一個任務(wù)并且傳遞給線程池。線程池的線程會并發(fā)的處理連接上的請求。用線程池控制線程數(shù)量,其他線程排隊等候。實現(xiàn)包,線程池頂級接口是但是嚴格意義講并不是一個線程。此線程池支持定時以及周期性執(zhí)行任務(wù)的需求。 tutorial site1tutorial site2 一個問題: 每啟動一個新線程都會有相應(yīng)的性能開銷(涉及到OS的交互:創(chuàng)建線程,銷毀線程...

    superw 評論0 收藏0
  • Java線程

    摘要:中的線程池是運用場景最多的并發(fā)框架。才是真正的線程池。存放任務(wù)的隊列存放需要被線程池執(zhí)行的線程隊列。所以線程池的所有任務(wù)完成后,它最終會收縮到的大小。飽和策略一般情況下,線程池采用的是,表示無法處理新任務(wù)時拋出異常。 Java線程池 1. 簡介 系統(tǒng)啟動一個新線程的成本是比較高的,因為它涉及與操作系統(tǒng)的交互,這個時候使用線程池可以提升性能,尤其是需要創(chuàng)建大量聲明周期很短暫的線程時。Ja...

    jerry 評論0 收藏0
  • Java線程(2):使用線程池 ThreadPoolExecutor

    摘要:本文只介紹中線程池的基本使用,不會過多的涉及到線程池的原理??删彺婢€程的線程池創(chuàng)建一個可緩存線程的線程池。首先是從接口繼承到的方法使用該方法即將一個任務(wù)交給線程池去執(zhí)行。方法方法的作用是向線程池發(fā)送關(guān)閉的指令。 首先,我們?yōu)槭裁葱枰€程池?讓我們先來了解下什么是 對象池 技術(shù)。某些對象(比如線程,數(shù)據(jù)庫連接等),它們創(chuàng)建的代價是非常大的 —— 相比于一般對象,它們創(chuàng)建消耗的時間和內(nèi)存都...

    darry 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<