Lucene QueryParser в нескольких потоках: синхронизировать или создавать новые каждый раз?

У меня есть веб-приложение, в котором пользователи отправляют запросы на индекс Lucene. Запросы анализируются Lucene QueryParser, Я усвоил трудный путь QueryParser не является потокобезопасным.

Это лучше использовать один QueryParser и синхронизировать вызовы на его parse() метод? Или лучше создать новый экземпляр для каждого запроса? (Или я бы лучше обслужил бассейн QueryParser s?)

Я знаю, что в целом подобные вопросы зависят от конкретных особенностей и требуют профилирования, но, возможно, кто-то может сказать однозначно: QueryParser s очень недорого / дорого построить?

1 ответ

Решение

Создайте новый каждый раз. Это легкие объекты, и JVM очень хорошо справляется с созданием объектов и сборкой мусора. Определенно не используйте пул объектов.

Другие вопросы по тегам