JAVA的線程可以在多個CPU上運行嗎?,javacpu

來源:互聯網
上載者:User

JAVA的線程可以在多個CPU上運行嗎?,javacpu
    這個是我一個技術相當好的哥們去面試的時候碰到的奇葩問題,那天,這個面試官的答案是不能。後來就帶著這個問題去國內外的論壇上搜了一把,也是各說紛紜,實在是沒有一個統一的答案,簡直有點公說公有理,婆說婆有理的架勢。

    幾個意見大致如下,第一,不能,因為“進程是CPU進行調度的單位,而JVM是一個進程,於是就只能跑在一個CPU上”。第二,“進程是CPU進行調度的單位,這沒錯,但是OS負責將一個進程在不同的CPU上調度到另外一個CPU上,而這個進程,則是由不同的線程構成的,那麼說,線程還是在不同的CPU上運行了”。我更傾向於第二種解釋,於是核心問題就變成了討論“JVM能不能夠將線程安排到不同的CPU上去運行呢?”。
    最終,在SUN公司授權的《Java核心技術》,第7版卷II,第8版卷I,有關於“可運行線程”中,找到如下兩句話:
    “今天,人們很可能有單台擁有多個CPU的電腦,但是,並發執行的進程數並不是CPU數目制約的。作業系統的時間片分配給每一個進程,給人平行處理的感覺”。
    好吧,上面的這句話,並不能說明這個答案,但是當我看到下面的這句原話的時候,感覺答案就在這裡了:
    "在具有多個處理器的機器上,每一個處理器運行一個線程,可以有多個線程並行運行。當然,如果線程的數目多於處理器的數目,調度器依然採用時間片機制"。這句話足以用來反駁那個出問題的人了,因為他的答案本身就是錯的。
    儘管,盡信書不如無書,但是,還能有更好的選擇嗎?帶著這個問題,繼續走下去~ Fighting~  ziwen@163.com  I enjoy PM、Java、Oracle. I'm an English lover as well~ ho ho~
後記:更詳細的資訊可以參見有關Java虛擬機器實現的“並發”系列講解,基本上每本關於Java虛擬機器有關的書籍以及官方文檔都會講到JVM如何?線程的幾種方式。 基於系統核心,基於使用者線程等等實現。JVM中的線程實現是本地化的~ 本地化的意思就是與平台有關了,儘管與平台有關,但是線程調度,仍舊是最佳高效的方式,有資料曾說過:線程的建立銷毀與調度的開銷是進程的三十分之一。
在java中,多線程真的是多個線程同時運行?

一個處理器(cpu)在某一個時間點上永遠都只能是一個線程!雙核cpu你可以理解為兩塊cpu,4核、8核等以此類推,就單個cpu而言某個時間點只能是一個線程在運行, 所謂的多線程是通過調度擷取cpu的時間片實現的 其實就相當於 cpu是一個人 多線程是幾件事 cpu一下子幹這件事 幹一會兒時間片到了就幹另一件 由於cpu計算速度很快很快 所以看起來就像幾件事情在同時做著 不過現在cpu都是雙核四核八核的 這些是真的一起乾的 因為這是幾個人幹幾件事 肯定是一起做的啦
不曉得這樣比喻你可以理解不 這樣不能理解我也麼有辦法啦
 
java中的線程與作業系統中的線程一樣,多線程是多個線程同時運行還是一個時間點運行一個線程?

從規範來說,線程就是java線程,你不需要直到是不是和作業系統的線程一樣,你也不應該知道,因為有些系統上是類比的,有些是直接使用作業系統的。

從實現來說,目前在多數系統上是一樣的。

宏觀來看是同一時間多個線程在運行,圍觀到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.