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