Scala中的进程级并行性

时间:2013-10-24 23:48:17

标签: scala concurrency akka

我想在Scala中结合使用反射和并行处理,但我被reflection's lack of thread safety咬了。 所以,我正在考虑在自己的进程中运行每个任务(而不是线程)。 有没有简单的方法呢?

例如,有没有办法配置.par所以它产生进程,而不是线程?或者是否有一些函数fork采用闭包并在新进程中运行它?

编辑:期货显然是一个很好的方式。 但是,我仍然需要弄清楚如何在单独的进程中运行它们。

编辑2:即使使用Akka的“fork-join-executor”调度程序,我仍然遇到并发问题,这听起来确实应该是分叉进程。但是,当我在期货中运行ManagementFactory.getRuntimeMXBean().getName()时,似乎所有东西仍然存在于同一个过程中。 这是检查实际进程级并行性的正确方法吗? 我使用正确的Akka调度员吗?

编辑3:我意识到反思很糟糕。不幸的是,它被用在我需要的库中。

2 个答案:

答案 0 :(得分:4)

您是否考虑过Scala ActorsAkka?使用Scala可能没有比并行和异步编程更令人信服的理由了。它融入了语言。看看这些设施。我很确定你会找到你需要的东西。

答案 1 :(得分:0)

关于你在这里试图解决的问题的信息很少......以前的答案几乎都在球上 - 看看Actors等... Akka你可能会发现你没有#39; t需要做一些太复杂的事情。多线程环境中的内省/反思通常意味着在分解手头问题方面的混乱而且没有深思熟虑的策略。