用非函数语言编写功能程序

Pra*_*nav 4 java functional-programming multicore imperative-languages

假设我在Java中使用不可变数据结构编写程序.即使它不是一种功能语言,它也应该能够并行执行.如何确保使用处理器的所有内核执行程序?计算机如何决定可以并行运行哪些代码?

PS我问这个问题的意图不是要找出如何并行化java程序.但要知道 - 计算机如何并行化代码.它可以在用非功能语言编写的功能程序中完成吗?

Sas*_*gov 8

Java程序通过线程并行化.计算机无法神奇地弄清楚如何使用Java等命令式语言在所有核心上分发应用程序的各个部分.只有像Erlang或Haskell这样的函数式语言才能做到这一点.阅读Java线程.

  • 我不明白为什么那应该是"纯功能"语言的保留. (2认同)

Tom*_*ine 5

我不知道自动并行化 JVM.它们确实存在于FORTRAN等其他语言中.

您可能会发现为JDK7安排的JSR166y fork-join框架很有趣.


Chi*_*hii 3

我不认为你可以“强制”JVM并行化你的程序,但是有一个单独的线程执行每个“任务”,如果你能以这种方式分解你的程序,在大多数情况下可能会成功?然而并行性仍然不能得到保证。