【发布时间】:2012-01-31 14:22:08
【问题描述】:
据我了解,如果我使用 db.getView() 从数据库打开视图,则从不同线程多次执行此操作毫无意义。
但是假设我有多个线程使用 getAllDocumentsByKey() 搜索视图这样做是否安全并并行迭代 DocumentCollections?
此外,Document.recycle() 与 DocumentCollection 混淆,如果两个线程搜索相同的值并在其集合中具有相同的结果,这是否会相互混淆?
注意:我刚刚开始对此进行深入研究,但认为在这里记录是一件好事,也许我会很幸运,有人会给出答案。
【问题讨论】:
-
你问的是Java类还是COM类?
-
我想我并不清楚。我说的是 JAVA API
-
Java API 会同步操作,但当您的代码更改与数据库对象相对应且跨线程在 Java 对象之间共享的 C API 对象的状态时,很容易出现问题。我认为 getAllDocumentsByKey 操作对您来说是安全的,但考虑到幕后发生的同步,我怀疑您会从这种方式的多线程中获得很多优势。我可能只有一个线程进行搜索并将集合分派给工作线程。