Надеюсь, это не слишком глупый вопрос ...
В моем проекте есть код, похожий на следующий:
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
вводить какие-либо потенциальные узкие места производительности, о которых я должен знать или которых можно избежать, учитывая, что скорость чтения значительно превышает скорость записи? Большое спасибо много,