JAVA的线程可以在多个CPU上运行么?

关于这个问题,有以下两种答案:

第一,不能,因为“进程是CPU进行调度的单位,而JVM是一个进程,于是就只能跑在一个CPU上”。

第二,“进程是CPU进行调度的单位,这没错,但是OS负责将一个进程在不同的CPU上调度到另外一个CPU上,而这个进程,则是由不同的线程构成的,那么说,线程还是在不同的CPU上运行了”。


在SUN公司授权的《Java核心技术》中,有这样两句话,给了我们答案:

今天,人们很可能有单台拥有多个CPU的计算机,但是,并发执行的进程数并不是CPU数目制约的。操作系统的时间片分配给每一个进程,给人并行处理的感觉

在具有多个处理器的机器上,每一个处理器运行一个线程,可以有多个线程并行运行。当然,如果线程的数目多于处理器的数目,调度器依然采用时间片机制”。

因此,Java的线程是可以在多个cpu上运行的。





你可能感兴趣的:(深入理解Java虚拟机)