并行化Java程序

时间:2015-04-14 16:31:43

标签: java multithreading parallel-processing acceleration

如何在Java上并行化程序,以便并行版本的执行时间(很多)小于没有线程的程序的执行时间? 我试过例如ExecutorService"Parallel.For" for Java?),但它的工作时间长约3倍

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

P.S。我需要并行化while循环

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

我会向你推荐这个帖子,因为它在这个主题上有很好的细节:[Java 8's streams: why parallel stream is slower?

它的长短不一,并行性为任何进程带来了开销和复杂性,虽然并行化肯定会有所收获,但它不会在2个内核上运行2个线程= 2倍速。< / p>