Lucene鼓勵重複使用來自多個線程的IndexWriter。Lucene IndexWriter線程安全
鑑於兩個線程可能對IndexWriter有引用,如果線程A在寫入器上調用close,那麼線程B將留下一個無用的寫入器。但就我的理解,lucene以某種方式知道另一個線程使用相同的作者並推遲其關閉。
這的確是這樣嗎? lucene如何跟蹤另一個線程使用該作者?
編輯 從答案來看,關閉IndexWriter是不正確的。但是這帶來了一個新問題:如果一個人保持打開IndexWriter,基本上阻止從另一個JVM訪問此索引(例如,在集羣或許多應用程序之間的共享索引中)。
因此,如果兩個線程正在使用同一個編寫器並且一個線程關閉它,那麼另一個線程確實留下了一個無用的編寫器? – yannisf 2011-05-05 15:00:20
@yannisf:好的,我想是的,但對於任何可變的共享對象來說,這是一樣的 - 一個線程可以使共享對象無用。這似乎並不是特例。 – skaffman 2011-05-05 15:01:25