-1

如何在 Java 上并行化程序,以使并行版本的执行时间(远)小于没有线程的程序的执行时间?我尝试了例如ExecutorServiceJava 的“Parallel.For”?),但它的工作时间长了大约 3 倍

问题是我在 Java 中不正确地使用线程,还是用 2 核获得 2 次加速是不真实的(这可能用 4 核吗?)?

PS我需要并行化while循环

4

2 回答 2

0

我会向你推荐这个线程,因为它在这个主题上有很好的细节:[ Java 8 的流:为什么并行流更慢?

总而言之,并行性会给任何进程带来开销和复杂性,虽然并行化肯定会带来好处,但它不会在 2 个内核上运行 2 个线程 = 快 2 倍。

于 2015-04-14T16:36:15.303 回答
0

多线程编程在以下情况下很有用:

  • 内存操作密集时需要多核系统(如果有像下面这样的长 I/O 操作则不需要)
  • 数据库操作(执行查询)
  • 网络操作(如发送文件或调用网络服务)
  • 文件操作(读写文件)

如果您不处于上述情况之一,由于进程之间切换的开销,添加多线程会导致应用程序变慢。

于 2015-04-14T16:35:08.057 回答