是否需要使用multithreading算法来使用多核处理器?

我只是想知道如果必须使用多核处理器我们是否真的需要算法是multithreading的,或者jvm是否会使用多核甚至 – 尽管我们的算法是顺序的?

更新:

相关问题:

  • 在Java中使用multithreading快速或合并排序

我不相信任何当前的生产JVM实现执行自动multithreading。 他们可能会使用其他内核进行垃圾收集和其他一些内务处理,但如果您的代码按顺序表示,则很难自动并行化并保持精确的语义。

可能有一些实验/研究JVM试图并行化JIT可以发现的令人尴尬的并行代码区域,但我还没有听说过类似的生产系统。 即使JIT 确实发现了这种情况,它也可能不如首先设计并行代码有效。 (顺序编写代码,您很容易最终做出设计决策,这会无意中妨碍自动并行。)

您的实现需要是multithreading的,以便利用您可以使用的多个内核。

整个系统可以为每个运行的应用程序或服务使用单个核心。 但是,除非另有说明,否则每个正在运行的应用程序都将使用单个线程/核心。

Java不会自动将程序拆分为线程。 目前,如果您希望代码能够同时在多个内核上运行,则需要通过线程或其他一些机制告诉计算机如何将代码拆分为任务以及程序中任务之间的依赖关系。 但是,其他任务可以在其他内核上同时运行,因此如果您同时运行其他任务,您的程序仍可以在多核处理器上运行得更快。

使当前代码可以并行化的一种简单方法是使用JOMP并行化循环和处理能力强化,轻松实现代码的部分化。

我不认为使用multithreading算法将有效地利用多核处理器,除非编码有效。 这是一篇很好的文章,讨论如何为开发人员使用多核处理器 –

http://java.dzone.com/news/building-multi-core-ready-java