У меня есть унаследованный код, который имеет реализацию кэша, который выглядит следующим образом:Переменная видимость
long lastUpadate;
...
public void checkCach(){
if(lastUpdated + UPDATE_INTERVAL < System.currentTimeMillis()){
synchronized(this){
//cache update goes here
lastUpdate = System.currentTimeMillis();
}
}
}
Может ли быть проблемой в многоядерной процессорной среде, что темы не будут видеть обновленную lastUpdate поля, потому что они проверяют его вне синхронного раздела (выпуск кэшей процессоров)?
Обновлено: также может переназначения быть применен к этому синхронизированный блок, что первый lastUpdate поле будет установлен, и только затем обновление кэша будет выполняться