@ Середина, я подозревал, что, что-то подобное было причиной.

сь, это не слишком глупый вопрос ...

У меня есть код, подобный следующему в моем проекте:

public class ConfigStore {

    public static class Config {

        public final String setting1;
        public final String setting2;
        public final String setting3;

        public Config(String setting1, String setting2, String setting3) {
            this.setting1 = setting1;
            this.setting2 = setting2;
            this.setting3 = setting3;
        }

    }

    private volatile HashMap<String, Config> store = new HashMap<String, Config>();

    public void swapConfigs(HashMap<String, Config> newConfigs) {
        this.store = newConfigs;
    }

    public Config getConfig(String name) {
        return this.store.get(name);
    }

}

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

В этом случае этоvolatile ключевое слово все еще нужно в переменной экземпляра магазина?Будет лиvolatile Ключевое слово представляет какие-либо потенциальные узкие места производительности, о которых я должен знать или которых можно избежать, учитывая, что скорость чтения значительно превышает скорость записи?

Большое спасибо,

Ответы на вопрос(4)

Ваш ответ на вопрос