Java和多核

时间:2014-07-09 14:29:01

标签: java multithreading jvm

我某处读到某个地方,每个核心应该有一个JVM。我还读到Java不适合多核或CPU,因此scala是首选。

最近on a link我读到多个线程确实在不同的核心中执行(如果可用)。

问题:

  1. JVM是否考虑了多个内核/ CPU并在可用的情况下在单独的内核中执行每个线程?
  2. 使用scala来更好地使用内核有点不同,只是在单独的内核中执行?
  3. 如果JVM在单独的核心(如果可用)中执行每个线程,每个核心一个JVM的含义是什么,使用单个JVM我可以利用所有核心。
  4. 如果对1的回答是肯定的,那么在同一台机器上运行的多个服务器实例中部署war / ear有什么用。

1 个答案:

答案 0 :(得分:4)

  1. 是。实际上,现在所有的JVM都使用本机线程。因此,跨内核的线程调度和分配由操作系统完成,而不是由JVM完成。

  2. Scala在JVM上执行,就像Java一样。因此,线程在Java和Scala之间使用内核的方式没有区别

  3. 没有理由每个核心有一个JVM。您可能希望避免每个JVM使用两个内存,或者能够在没有任何服务中断的情况下使用版本1到版本2,但这是另一回事。

  4. 没有理由与多线程问题有关。正如我所说,您可能希望有两个JVM能够在没有任何服务中断的情况下关闭一个JVM,或者为不同的客户隔离同一个应用程序的两个版本。但这与多线程无关。