Lucene QueryParser在多个线程中:每次同步或构造新的?
我有一个Web应用程序,用户向Lucene索引提交查询。 查询由Lucene QueryParser
解析。 我学到了QueryParser
不是线程安全的困难方法。
使用单个QueryParser
实例并同步对其parse()
方法的调用是否更好? 或者为每个查询构造一个新实例是否更好? (或者我可以通过QueryParser
池更好地服务吗?)
我知道,一般来说这样的问题取决于具体情况并要求分析,但也许有人可以明确地说“ QueryParser
的构建非常便宜/昂贵”?
每次创建一个新的。 这些是轻量级对象,JVM非常好地处理对象创建和垃圾收集。 绝对不要使用对象池。