cpu個數、核心數、線程數、Java多線程關係的理解__Java

來源:互聯網
上載者:User

一 cpu個數、核心數、線程數的關係

cpu個數:是指物理上,也及硬體上的核心數;

核心數:是邏輯上的,簡單理解為邏輯上類比出的核心數;

線程數:是同一時刻裝置能並存執行的程式個數,線程數=cpu個數 * 核心數

二 cpu線程數和Java多線程

首先明白幾個概念:

(1) 單個cpu線程在同一時刻只能執行單一Java程式,也就是一個線程

(2) 單個線程同時只能在單個cpu線程中執行

(3) 線程是作業系統最小的調度單位,進程是資源(比如:記憶體)分配的最小單位

(4)Java中的所有線程在JVM進程中,CPU調度的是進程中的線程

(5)Java多線程並不是由於cpu線程數為多個才稱為多線程,當Java線程數大於cpu線程數,作業系統使用時間片機制,採用線程調度演算法,頻繁的進行線程切換。

a 那麼java多進程,每個進程又多線程,cpu是如何調度的呢。

個人理解:作業系統並不是單純均勻的分配cpu執行不同的進程,因為線程是調度的最小單位,所以會根據不同進程中的線程個數進行時間分區,均勻的執行每個線程,也就是說A進程中有10個線程,而B進程中有2個進程,那麼cpu分給進程的執行時間理論上應該是5:1才合理。

b cpu線程數和java線程數有直接關係嗎。

個人理解:沒有直接關係,正如上面所說,cpu採用分區機制執行線程,給每個線程劃分很小的時間顆粒去執行,但是真正的項目中,線程要做很多的的操作,讀寫磁碟、資料邏輯處理、出於業務需求必要的休眠等等操作。

c 如何確定程式線程數。

個人理解:一般情況程式線程數等於cpu線程數的兩到三倍就能很好的利用cpu了,過多的程式線程數不但不會提高效能,反而還會因為線程間的頻繁切換而受影響,具體需要根據線程處理的業務考略,不斷調整線程數個數,確定當前系統最優的線程數。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.