我正在寻找用于管理不线程安全的Java对象的模式和api,以防并行计算需要使用此对象。在我的情况下(通常),这适用于数据库连接以及其他类型的对象。
我正在查看的特定并行场景只是一个正在foreach
ed的Scala并行集合,而在foreach
子句中,需要使用该对象。由于手头的Java对象是可变的并且对并发性不安全,因此不应该起作用。
这里有一个很好的建议,in pure Java和other ones also Java。我想知道在Scala中是否可以实现更高的优雅。
答案 0 :(得分:2)
我遇到了这个问题并使用Actors解决了这个问题。
每个actor都可以访问可变对象,并且只能使用消息进行修改。在我的情况下,可变对象很重,并且具有显着的创建成本。为了最小化我在开始时创建了一堆它们并将它们放在Akka路由器后面(smallestMailbox最适合我的情况)。我还没有看到基于Future
的方法来解决这个问题。