Lucene QueryParser в нескольких потоках: синхронизировать или создавать новые каждый раз?
У меня есть веб-приложение, в котором пользователи отправляют запросы на индекс Lucene. Запросы анализируются Lucene QueryParser
, Я усвоил трудный путь QueryParser
не является потокобезопасным.
Это лучше использовать один QueryParser
и синхронизировать вызовы на его parse()
метод? Или лучше создать новый экземпляр для каждого запроса? (Или я бы лучше обслужил бассейн QueryParser
s?)
Я знаю, что в целом подобные вопросы зависят от конкретных особенностей и требуют профилирования, но, возможно, кто-то может сказать однозначно: QueryParser
s очень недорого / дорого построить?
1 ответ
Решение
Создайте новый каждый раз. Это легкие объекты, и JVM очень хорошо справляется с созданием объектов и сборкой мусора. Определенно не используйте пул объектов.