我有一个Web应用程序,用户可以在其中向Lucene索引提交查询。查询
由Lucene解析
QueryParser 。我了解到QueryParser不是线程安全的困难方法。

使用单个QueryParser实例并在对其parse()方法的调用上进行同步是否更好?还是为每个查询构造一个新实例更好? (或者,我可以通过QueryParser池来更好地服务吗?)

我知道,通常这样的问题取决于具体情况,需要进行概要分析,但是也许有人可以肯定地说“QueryParser极其便宜/构造昂贵”?

最佳答案

每次创建一个新的。这些是轻量级的对象,JVM很好地处理了对象的创建和垃圾回收。绝对不要使用对象池。

关于java - Lucene QueryParser在多个线程中: synchronize or construct new each time?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5525018/

10-10 14:35