Вопрос

У меня есть core JAR, который предоставляет некоторую функциональность и, следовательно, используется во множестве других приложений - настольных приложениях, веб-приложениях и т.д.Теперь этот основной JAR поддерживает пул объектов, содержащий объекты, создание которых требует больших вычислительных затрат.Пул объектов имеет фиксированный размер, и поэтому я создаю все объекты сразу и заполняю пул.Что я хочу сделать, так это то, что всякий раз, когда загружается приложение, использующее мой JAR, пул объектов создается без того, чтобы приложение знало о деталях такого пула.И что, несмотря на то, что время загрузки приложения сократится из-за заполнения пула, но как только приложение пройдет этот этап, при создании таких тяжелых объектов позже больше не должно быть снижения производительности.

Есть ли способ достичь этого?

Это было полезно?

Решение

Единственный способ сделать что-то подобное, помимо добавления явных перехватов в клиентские приложения для вызова вашей логики запуска, - это добавить статические инициализаторы в ваши классы для создания вашего пула.

Статический инициализатор запускается, когда ваш класс впервые загружается JVM (до вызова любого кода в вашем классе), что не совсем детерминировано, но обычно выполняется при первом попадании в путь кода, ссылающийся на ваш класс.

Я бы порекомендовал предоставить какие-то перехваты в вашей логике запуска для вызова клиентских приложений, таким образом, они могут точно контролировать этот тип вещей, а не запускать вашу логику запуска в непредсказуемое время.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top