单线程程序,以利用多个核心

时间:2013-04-10 20:55:14

标签: java multithreading

Java程序的单个线程是否可以自动使用CPU上的多个内核?

3 个答案:

答案 0 :(得分:15)

  

Java程序的单个线程是否可以自动使用CPU上的多个内核?

是和否。单线程Java程序将使用多个线程,因为GC,JMX,终结器和其他后台线程可以在不同的CPU(无论是CPU还是内核)中运行。如果GC线程可以在另一个CPU中运行,那么它们可以显着提高性能。但是,您的单线程应用程序代码虽然可以在CPU之间移动,但不会同时在2个CPU中运行。

  

如何找出答案?

这是一个更难的问题,它取决于您正在运行的架构。 * nix下的ps将能够显示运行队列中是否有多个线程,但即使这样,它也可能无法显示它们实际上是在多个CPU中执行。

答案 1 :(得分:1)

如果按照定义单线程,您自己的代码将无法在多个内核上运行。没有单个线程应用程序可以在多个内核上同时运行 - 除非您在不知情的情况下使用欠载多线程调用/库。

答案 2 :(得分:0)

通常gc在一个单独的线程中运行。但通常它没有任何显着差异。就是这样。