如何在 Java 上并行化程序,以使并行版本的执行时间(远)小于没有线程的程序的执行时间?我尝试了例如ExecutorService
(Java 的“Parallel.For”?),但它的工作时间长了大约 3 倍
问题是我在 Java 中不正确地使用线程,还是用 2 核获得 2 次加速是不真实的(这可能用 4 核吗?)?
PS我需要并行化while
循环
如何在 Java 上并行化程序,以使并行版本的执行时间(远)小于没有线程的程序的执行时间?我尝试了例如ExecutorService
(Java 的“Parallel.For”?),但它的工作时间长了大约 3 倍
问题是我在 Java 中不正确地使用线程,还是用 2 核获得 2 次加速是不真实的(这可能用 4 核吗?)?
PS我需要并行化while
循环
我会向你推荐这个线程,因为它在这个主题上有很好的细节:[ Java 8 的流:为什么并行流更慢?
总而言之,并行性会给任何进程带来开销和复杂性,虽然并行化肯定会带来好处,但它不会在 2 个内核上运行 2 个线程 = 快 2 倍。
多线程编程在以下情况下很有用:
如果您不处于上述情况之一,由于进程之间切换的开销,添加多线程会导致应用程序变慢。