我有一个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/