<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>

          各大廠面試高頻的面試題新鮮出爐,你能答上幾道?

          共 2279字,需瀏覽 5分鐘

           ·

          2021-03-16 12:42

          關(guān)于生產(chǎn)環(huán)境如何配置線程數(shù),還是要根據(jù)業(yè)務(wù)來進行區(qū)分,我們時常會聽到什么IO密集型、CPU密集型任務(wù)...

          那么這里提一個問題:大家知道什么樣的任務(wù)或者代碼會被認定為IO/CPU密集?又是用什么樣的標(biāo)準(zhǔn)來認定IO/CPU密集?

          如果你沒有明確的答案,那么就隨著這篇文章一起來聊一聊吧。

          開篇之前我們先來了解下什么是CPU密集型和IO密集型

          CPU密集型(CPU-bound)

          CPU密集型也叫計算密集型,顧名思義就是應(yīng)用需要非常多的CPU計算資源,系統(tǒng)運作大部分的狀況是CPU Loading 100%,CPU要讀/寫I/O(硬盤/內(nèi)存),I/O在很短的時間就可以完成,而CPU還有許多運算要處理,CPU Loading很高。

          在多核CPU時代,我們要讓每一個CPU核心都參與計算,將CPU的性能充分利用起來,這樣才算是沒有浪費服務(wù)器配置,如果在非常好的服務(wù)器配置上還運行著單線程程序那將是多么重大的浪費。

          代碼體現(xiàn):

          int n = 0.0
          for (i in 0..9999999) {
              n = Math.cos(i.toDouble()
              )

          平常開發(fā)應(yīng)用場景:CPU密集型任務(wù)一般來說:計算型代碼、Bitmap轉(zhuǎn)換、Gson轉(zhuǎn)換等


          IO密集型(I/O bound)

          對于IO密集型的應(yīng)用,就很好理解了,我們現(xiàn)在做的開發(fā)大部分都是WEB應(yīng)用,涉及到大量的網(wǎng)絡(luò)傳輸。不僅如此,與數(shù)據(jù)庫,與緩存間的交互也涉及到IO,一旦發(fā)生IO,線程就會處于等待狀態(tài),當(dāng)IO結(jié)束,數(shù)據(jù)準(zhǔn)備好后,線程才會繼續(xù)執(zhí)行。因此從這里可以發(fā)現(xiàn),對于IO密集型的應(yīng)用,我們可以多設(shè)置一些線程池中線程的數(shù)量,這樣就能讓在等待的這段時間內(nèi),線程可以去做其它事,提高并發(fā)處理效率。

          代碼體現(xiàn):

          BufferedReader br =new BufferedReader(new FileReader("xxxx"), 1024);
          try {
              while (br.readLine() != null) {}
          finally {
              if (br != null) {
                  br.close()
              }


          平常開發(fā)應(yīng)用場景:文件讀寫、DB讀寫、網(wǎng)絡(luò)請求等


          日常開發(fā)中如何優(yōu)化:

          計算密集型任務(wù)的特點是要進行大量的計算,消耗CPU資源,比如計算圓周率、對視頻進行高清解碼等等,全靠CPU的運算能力。這種計算密集型任務(wù)雖然也可以用多任務(wù)完成,但是任務(wù)越多,花在任務(wù)切換的時間就越多,CPU執(zhí)行任務(wù)的效率就越低。所以,要最高效地利用CPU,計算密集型任務(wù)同時進行的數(shù)量應(yīng)當(dāng)?shù)扔贑PU的核心數(shù)

          線程數(shù) = CPU核數(shù)+1

          也可以設(shè)置成CPU核數(shù)*2,這還是要看JDK的使用版本,以及CPU配置(服務(wù)器的CPU有超線程)。對于JDK1.8來說,里面增加了一個并行計算,計算密集型的較理想線程數(shù) = CPU內(nèi)核線程數(shù)*2



          IO密集型,涉及到網(wǎng)絡(luò)、磁盤IO的任務(wù)都是IO密集型任務(wù),這類任務(wù)的特點是CPU消耗很少,任務(wù)的大部分時間都在等待IO操作完成(因為IO的速度遠遠低于CPU和內(nèi)存的速度)。對于IO密集型任務(wù),任務(wù)越多,CPU效率越高,但也有一個限度。常見的大部分任務(wù)都是IO密集型任務(wù),比如Web應(yīng)用

          線程數(shù) = CPU核心數(shù)/(1-阻塞系數(shù))

          這個阻塞系數(shù)一般為0.8~0.9之間,也可以取0.8或者0.9。套用公式,對于雙核CPU來說,它比較理想的線程數(shù)就是20,當(dāng)然這都不是絕對的,需要根據(jù)實際情況以及實際業(yè)務(wù)來調(diào)整。




          Java并發(fā)內(nèi)容還有很多比如同步工具類、lock類原子類、集合相關(guān)類、Executor框架相關(guān)類

          當(dāng)然還有一張更詳細的圖

          內(nèi)容容太多,很多小伙伴都迫不及待的想獲取,但是并發(fā)知識大,一口吃不下。想成為一名優(yōu)秀的Java開發(fā),學(xué)好并發(fā)還是要靜下心來好好學(xué)習(xí),學(xué)好了絕對是你走入高薪行列的必備能力。


          這次小編周末和京東的Monkey大佬一起吃了個飯,聊了下這個并發(fā)編程如何學(xué)習(xí),他是這方面的專家,之前在京東內(nèi)部也做過很多這方面的分享,我特邀請他為大家來開設(shè)專欄小課,內(nèi)容如下:



          《Java并發(fā)編程》深度精講!這期課程是根據(jù)一線大廠面試內(nèi)容專門開設(shè),并且限時0.02元!針對技術(shù)人的面試考點與成長路徑,給程序員傳授實用的技能跟面試技巧,培養(yǎng)真正符合一線互聯(lián)網(wǎng)公司用人需求的人才。針對具體技能進行深度剖析講解,結(jié)合一線互聯(lián)網(wǎng)大廠熱門面試題詳析,搞定大廠面試,拿下心儀offer。


          趕緊上車,報名的同學(xué)還有機會獲取金三銀四面試書一本。點擊掃碼,即可購課~


          點擊閱讀原文也可購課~

          瀏覽 62
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <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>
                  国产又白又嫩又紧又多水A片视频 | 夜色视频在线播放 | 亚洲专区欧美专区 | 国产一级一片免费播放放a | 免费看毛片网站 |