Ленивый синглтон: двойная проверка блокировки против Идиомы инициализации по требованию

У меня есть требование ленивой загрузки ресурсов в параллельной среде. Код для загрузки ресурсов должен выполняться только один раз.

Оба Двойная проверка блокировки (с использованием JRE 5+ и ключевого слова volatile) и Идиома инициализации по требованию , похоже, хорошо подходит для этой работы.

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

Мой вопрос: какой подход лучше? И почему? Если ваш ответ отрицательный. Как бы вы справились с этим требованием в среде Java SE?

Альтернативы

Могу ли я использовать CDI для этого, не навязывая его использование во всем моем проекте? Есть какие-нибудь статьи?

9
задан Anthony Accioly 31 May 2011 в 20:19
поделиться