【问题标题】:Achieving multi-core in Java - how?在 Java 中实现多核 - 如何实现?
【发布时间】:2011-05-13 08:07:26
【问题描述】:

在 Java 中实现多核最简单的方法是什么?我的意思是,要特别指出执行项目某些部分的核心是什么,所以旧的“普通”java线程不是一种选择。

到目前为止,有人建议我使用 JConqurr(它是一个用于 Java 中的多核编程的 Eclipse 工具包)、JaMP(它为 OpenMP 扩展 Java)和 MPJ express,我对此了解不多。您认为以上哪一项最好,或者您有其他建议吗?最好以某种方式测量性能提升/增益,但不是唯一的。

任何帮助将不胜感激。 谢谢, 二十九。

【问题讨论】:

  • 这个术语(“实现多核”)是否在任何地方使用?我会将此问题更改为“在 Java 中的特定核心上运行线程”
  • 我相信这个词是“处理器亲和性”,它既适用于内核,也适用于处理器。
  • 为什么您需要能够为线程设置处理器亲和性?为什么不让 JVM 处理这些决定?

标签: java multicore


【解决方案1】:

尽管在 Java 中编写多线程代码很容易,但 Java 标准运行时中没有任何内容通常允许您告诉 JVM 或操作系统如何调度您的程序。

因此,您将需要专门为您的 JVM 和/或您的操作系统编写代码,而这些代码在 Java 中可能不可行(除非您深入研究 JNI 或 JNA)。在许多 Unix 版本(也可能是 Windows)中,外部程序可以将进程固定到 CPU,但我认为您不能为单个线程执行此操作。

【讨论】:

  • @khachik,我认为这不是原因。请参阅 Java 6 附带的桌面集成功能。基本上,Java 的设计者有意隐藏了正在运行的程序中的很多 实现细节。这允许 JVM 在发生时以尚未设想的方式进行优化。
【解决方案2】:

Scala 在这方面很受欢迎。它在 JVM 上运行,并具有 Java 绑定以将它们连接在一起。

【讨论】:

  • 问题是,我必须使用 Java。不允许使用其他语言。
猜你喜欢
  • 1970-01-01
  • 2011-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-25
  • 1970-01-01
  • 1970-01-01
  • 2020-01-26
相关资源
最近更新 更多