如何对Java-legacy非线程安全对象的实例进行池化,以进行并行计算

时间:2014-12-01 20:20:31

标签: scala concurrency

我正在寻找用于管理线程安全的Java对象的模式和api,以防并行计算需要使用此对象。在我的情况下(通常),这适用于数据库连接以及其他类型的对象。

我正在查看的特定并行场景只是一个正在foreach ed的Scala并行集合,而在foreach子句中,需要使用该对象。由于手头的Java对象是可变的并且对并发性不安全,因此不应该起作用。

这里有一个很好的建议,in pure Javaother ones also Java。我想知道在Scala中是否可以实现更高的优雅。

1 个答案:

答案 0 :(得分:2)

我遇到了这个问题并使用Actors解决了这个问题。

每个actor都可以访问可变对象,并且只能使用消息进行修改。在我的情况下,可变对象很重,并且具有显着的创建成本。为了最小化我在开始时创建了一堆它们并将它们放在Akka路由器后面(smallestMailbox最适合我的情况)。我还没有看到基于Future的方法来解决这个问题。