如何在Java上并行化程序,以便并行版本的执行时间(很多)小于没有线程的程序的执行时间?
我试过例如ExecutorService
("Parallel.For" for Java?),但它的工作时间长约3倍
我在Java中使用线程的问题是不正确的,或者使用2个内核获得2倍加速是不真实的(这可能是4个内核吗?)?
P.S。我需要并行化while
循环
答案 0 :(得分:0)
多线程编程在以下情况下很有用:
如果您不处于以前的某种情况,由于在进程之间切换的开销,添加多线程会导致应用程序变慢。
答案 1 :(得分:0)
我会向你推荐这个帖子,因为它在这个主题上有很好的细节:[Java 8's streams: why parallel stream is slower?
它的长短不一,并行性为任何进程带来了开销和复杂性,虽然并行化肯定会有所收获,但它不会在2个内核上运行2个线程= 2倍速。< / p>