1

JavaDoc for DBCursorによると、結果はデー​​タベースから遅延フェッチされます。しかし

public class DBApiLayer extends DB {
    ...
    private void init( Response res ){
    ...
       _cur = res.iterator()
    ...
    }
    Iterator<DBObject> _cur;
    ...
}

クエリに一致するすべてのアイテムが含まれています(私が理解しているように、それらはヒープを取ります)。また、並行 db.collection.update(...) はこれらのオブジェクトを変更しません。すべてのオブジェクトをヒープスレッドセーフ実装に格納していますか?

この場合の「レイジー」と「スレッドセーフ」の意味を教えてください。

4

1 に答える 1

0

"Lazy" は、クライアントが DBCursor を反復処理するときに、次のバッチが遅延して要求されることを意味します。したがって、イテレーションを早期に中断すると、残りの結果はフェッチされません。

あなたが参照したページの「スレッドセーフ」は、ドライバーのすべてのクラスが複数のスレッドを同時に使用しても安全であることを意味するものではありません。実際には、MongoClient、DB、DBCollection はスレッド セーフですが、DBCursor と DBObject はそうではありません。

于 2013-05-26T15:55:21.103 に答える