我想在 Scala 中将反射与并行处理结合使用,但我被反射缺乏线程安全性所困扰。所以,我正在考虑只在自己的进程(而不是线程)中运行每个任务。有什么简单的方法可以做到这一点?
例如,有没有办法配置.par
它产生进程,而不是线程?或者是否有一些函数fork
需要一个闭包并在一个新进程中运行它?
编辑:期货显然是一个好方法。但是,我仍然需要弄清楚如何在单独的进程中运行它们。
编辑 2:即使使用 Akka 的“fork-join-executor”调度程序,我仍然遇到并发问题,这听起来确实应该是分叉进程。但是,当我ManagementFactory.getRuntimeMXBean().getName()
在 Futures 中运行时,似乎一切仍然存在于同一个过程中。这是检查实际进程级并行性的正确方法吗?我是否使用了正确的 Akka 调度程序?
编辑 3:我意识到反射很糟糕。不幸的是,它在我需要的库中使用。