2015-04-22 50 views
0

這個問題是關於Java中的多線程。在JAVA中同時運行多個線程

多線程是爲了最大限度地利用cpu。 根據我所讀到的,一次只能執行一個線程。我相信這對單處理器系統來說是真的。可以同時執行的線程數取決於哪些因素?

對於實例,如果我使用4個核心處理器,可以同時運行多少個線程?

在此先感謝。

+0

可能的重複[最大數量的線程可以在Java中同時運行在CPU上](http://stackoverflow.com/questions/21650083/maximum-number-of-threads-than-can-run-concurrently- in-java-on-a-cpu) – tucuxi

+0

_根據我讀的內容......我相信它對於單處理器來說是真的。你的信念是正確的:你閱讀的內容已過時。當一臺電腦只有一個CPU時,情況確實如此,但是現在,即使是智能手機也可以有一個以上的CPU,並且大型機可以有超過一百個CPU。併發線程的最大數量等於CPU的數量。 (注意:_hyperthreaded_核心可以計爲多個虛擬CPU)。 –

回答

0

線程不受可用處理器/內核數量的限制。操作系統調度程序可以在單個CPU上的任意數量的線程之間來回切換。這是搶先多任務的意思。

處理器一次可以正常運行一個線程。當你有幾個進程在運行時,你的處理器可以很快地在它們之間切換,給每個處理器一個時間片。這給出了併發的錯覺,但實際上一切都在串行發生。

所以如果你有4個核心處理器,實際上4個線程可以並行運行。

+0

是的,但確實限制了可以同時運行的線程數量。 – Kayaman

1

對於4核處理器4個線程,或者8個(如果處理器中有超線程)。

HyperThreading允許一個不能以100%容量運行的內核在單個內核上運行2個線程。