假设我用Java编写了一个使用不可变数据结构的程序。即使它不是函数式语言,它也应该能够并行执行。如何确保我的程序正在使用我的处理器的所有内核执行?计算机如何决定哪些代码可以并行运行?
附注:我问这个问题的目的并不是要找出如何并行化java程序。但是要知道计算机是如何并行化代码的。它能在用非函数式语言编写的函数式程序中做到吗?
发布于 2009-05-11 12:25:42
我不认为你可以“强迫”JVM并行化你的程序,但是让一个单独的线程执行每个“任务”,如果你可以这样分解你的程序,在大多数情况下可能会做到这一点?然而,并行性仍然不能得到保证。
发布于 2009-05-11 09:58:20
Java程序是通过线程并行化的。计算机无法神奇地计算出如何使用命令式语言(如Java )将应用程序的各个部分分布到所有核心。只有像Erlang或Haskell这样的函数式语言才能做到这一点。请阅读有关Java线程的内容。
发布于 2009-05-11 11:47:36
我不知道automatic parallelization JVM。它们确实适用于其他语言,如FORTRAN。
您可能会发现为JDK7安排的JSR166y fork-join framework很有趣。
https://stackoverflow.com/questions/847430
复制相似问题