Заполнение пула объектов при загрузке JAR

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

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

1 ответ

Решение

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

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

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

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