Java程序的单个线程是否可以自动使用CPU上的多个内核?
答案 0 :(得分:15)
Java程序的单个线程是否可以自动使用CPU上的多个内核?
是和否。单线程Java程序将使用多个线程,因为GC,JMX,终结器和其他后台线程可以在不同的CPU(无论是CPU还是内核)中运行。如果GC线程可以在另一个CPU中运行,那么它们可以显着提高性能。但是,您的单线程应用程序代码虽然可以在CPU之间移动,但不会同时在2个CPU中运行。
如何找出答案?
这是一个更难的问题,它取决于您正在运行的架构。 * nix下的ps
将能够显示运行队列中是否有多个线程,但即使这样,它也可能无法显示它们实际上是在多个CPU中执行。
答案 1 :(得分:1)
如果按照定义单线程,您自己的代码将无法在多个内核上运行。没有单个线程应用程序可以在多个内核上同时运行 - 除非您在不知情的情况下使用欠载多线程调用/库。
答案 2 :(得分:0)
通常gc在一个单独的线程中运行。但通常它没有任何显着差异。就是这样。