1

我正在开发一个使用 ESRI 组件(基于 COM,用 JIntegra 包装)的 JVM 项目。客户端已请求我们在 JVM 上生成的 JAR 文件,并且可以访问 Java 代码。我想使用 Scala,但我担心图书馆与 Scala 的演员合作的效果如何。特别是我担心 COM 和 Java 用于将对象从一个线程传递到另一个线程的不同机制。

有人对这个有经验么?他们会打得好吗?

编辑:澄清

我注意到在 ESRI DB 上执行 I/O 时,CPU 利用率大约为 15%。我想阅读每一行并将该行传递给另一个演员进行解析。然后我可以一次从数据库中读取多个线程。问题是使用 ESRI 的库检索到的每一行实际上都是一个 Java 包装的 COM 对象。

4

1 回答 1

1

那么演员可能不是适合你的范式。理想情况下,参与者之间的消息将是不可变的,并且只会修改参与者的内部状态。听起来您想向演员提供一行,然后让演员就地修改该行。

如果是这样,您仍然会面临与使用线程+锁相同的并发风险,这可能是解决此特定问题的更好解决方案。

另一方面,如果行是不可变的,并且参与者返回从行派生的东西(没有改变它们),那么它应该“正常工作”,我不会特别担心 Java 的不同方式和 COM 见线程。

于 2010-04-22T13:09:31.953 回答