<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          問一下,線程池里面到底該設(shè)置多少個(gè)線程?

          共 1746字,需瀏覽 4分鐘

           ·

          2020-06-01 23:22

          作者:只會一點(diǎn)java

          cnblogs.com/dennyzhangdd/p/6909771.html

          一、拋出問題

          關(guān)于如何計(jì)算并發(fā)線程數(shù),一般分兩派,來自兩本書,且都是好書,到底哪個(gè)是對的?問題追蹤后,整理如下:

          第一派:《Java Concurrency in Practice》即《java并發(fā)編程實(shí)踐》,如下圖:

          01a61dd8b8b6acd2ad37842452ac319d.webp

          如上圖,在《Java Concurrency in Practice》一書中,給出了估算線程池大小的公式:

          Nthreads=NcpuUcpu(1+w/c),其中

          Ncpu=CPU核心數(shù)

          Ucpu=cpu使用率,0~1

          W/C=等待時(shí)間與計(jì)算時(shí)間的比率

          第二派:《Programming Concurrency on the JVM Mastering》即《Java 虛擬機(jī)并發(fā)編程》

          53344f8c1e48ee41989da2ca98c909f8.webp

          線程數(shù)=Ncpu/(1-阻塞系數(shù))

          二、分析

          對于派系一,假設(shè)cpu100%運(yùn)轉(zhuǎn),即撇開CPU使用率這個(gè)因素,線程數(shù)=Ncpu*(1+w/c)。

          現(xiàn)在假設(shè)將派系二的公式等于派系一公式,即Ncpu/(1-阻塞系數(shù))=Ncpu*(1+w/c),===》阻塞系數(shù)=w/(w+c),即阻塞系數(shù)=阻塞時(shí)間/(阻塞時(shí)間+計(jì)算時(shí)間),這個(gè)結(jié)論在派系二后續(xù)中得到應(yīng)征,如下圖:

          55471ba7582f16b8e527490e40973670.webp

          由此可見,派系一和派系二其實(shí)是一個(gè)公式……這樣我就放心了……

          三、實(shí)際應(yīng)用

          那么實(shí)際使用中并發(fā)線程數(shù)如何設(shè)置呢?分析如下(我們以派系一公式為例):

          Nthreads=Ncpu*(1+w/c)

          IO密集型:一般情況下,如果存在IO,那么肯定w/c>1(阻塞耗時(shí)一般都是計(jì)算耗時(shí)的很多倍),但是需要考慮系統(tǒng)內(nèi)存有限(每開啟一個(gè)線程都需要內(nèi)存空間),這里需要上服務(wù)器測試具體多少個(gè)線程數(shù)適合(CPU占比、線程數(shù)、總耗時(shí)、內(nèi)存消耗)。如果不想去測試,保守點(diǎn)取1即,Nthreads=Ncpu*(1+1)=2Ncpu。這樣設(shè)置一般都OK。擴(kuò)展一下:JAVA多線程和并發(fā)基礎(chǔ)面試問答

          計(jì)算密集型:假設(shè)沒有等待w=0,則W/C=0. Nthreads=Ncpu。

          至此結(jié)論就是:

          IO密集型=2Ncpu(可以測試后自己控制大小,2Ncpu一般沒問題)(常出現(xiàn)于線程中:數(shù)據(jù)庫數(shù)據(jù)交互、文件上傳下載、網(wǎng)絡(luò)數(shù)據(jù)傳輸?shù)鹊龋?/p>

          計(jì)算密集型=Ncpu(常出現(xiàn)于線程中:復(fù)雜算法)

          java中:Ncpu=Runtime.getRuntime().availableProcessors()

          當(dāng)然派系一種《Java Concurrency in Practice》還有一種說法,

          6479be62b6c9eab8341be6d322412e2a.webp

          即對于計(jì)算密集型的任務(wù),在擁有N個(gè)處理器的系統(tǒng)上,當(dāng)線程池的大小為N+1時(shí),通常能實(shí)現(xiàn)最優(yōu)的效率。(即使當(dāng)計(jì)算密集型的線程偶爾由于缺失故障或者其他原因而暫停時(shí),這個(gè)額外的線程也能確保CPU的時(shí)鐘周期不會被浪費(fèi)。)

          即,計(jì)算密集型=Ncpu+1,但是這種做法導(dǎo)致的多一個(gè)cpu上下文切換是否值得,這里不考慮。讀者可自己考量。

          四、總結(jié):

          選擇線程池并發(fā)線程數(shù)的因素很多:任務(wù)類型、內(nèi)存等線程中使用到所有資源都需要考慮。

          5cf17e2e81cd79c66bce7c1cff71418d.webp

          最近我一直在面試高級工程師,不管初級,高級,程序員,我想面試前,大家刷題一定是是少不了吧。

          我也一樣,我在網(wǎng)上找了很多面試題來看,最近又趕上跳槽的高峰期,好多粉絲,都問我要有沒有最新面試題,索性,我就把我看過的和我面試中的真題,及答案都整理好,整理了《第2版:互聯(lián)網(wǎng)大廠面試題》分類?65?PDF,累計(jì) 2340頁!我會持續(xù)更新中,馬上就出第三版,涵蓋大廠算法會更多!

          第2版:題庫非常全面

          包括 Java 集合、JVM、多線程、并發(fā)編程、設(shè)計(jì)模式、Spring全家桶、Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、MongoDB、Redis、MySQL、RabbitMQ、Kafka、Linux、Netty、Tomcat、Python、HTML、CSS、Vue、React、JavaScript、Android 大數(shù)據(jù)、阿里巴巴等大廠面試題等、等技術(shù)棧!

          第2版:都是親自整理,看看縮略圖吧

          17ae3512efc851c6060b7cf51ed8b6fe.webp


          我放在我的Java開發(fā)寶典里了,掃碼下方二維碼

          回復(fù):111,即可下載



          點(diǎn)贊是最大的支持?8be1b63e56d9aa40ae074097783df8af.webp

          瀏覽 42
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  91无码人妻精品1国产动漫 | 日本草比| 青青青青青欧美在线观视频观看 | 日本无码 视频在线观 | 欧美日本三级少妇三级久久 |