На самом деле, вы уверены, что у вас будет ужасная производительность?
Если volatile используется в основном для чтения, его производительность не так уж и плоха.Я бы порекомендовал сначала попробовать volatile и измерить снижение производительности и только в том случае, если это важно, затем выполнить какие-либо переделки .
Если вы действительно беспокоитесь о быстрых энергозависимых чтениях - тогда при запускеВы можете проверить тайм-аут - если прошло 60 секунд с момента последнего чтения конфигурации - перечитайте его.Логика изменится с update(Config c)
на
if(moreThan60SecondsPassed)
{
localConfig = configconfigHolder.getConfig();
}
Кроме того, если вы будете использовать энергонезависимый - вы не получите половину прочитанного конфига.Опасность заключается в том, что некоторые потоки могут не видеть обновленное значение вечно (без отношения «происходит до»).
Bw, вы рассматривали воссоздание потоков при обновлении конфигурации?В этом случае вы все еще можете передать config через конструктор.Это зависит от того, как часто вы хотите обновить конфигурацию.