Является ли кеш со следующей реализацией потокобезопасным для чтения?
Кешируемые данные хранятся в статическом списке list. Реализация заполнения кеша гарантирует, что обновление кеша c использованием updateCache будет проходить неконкурентно. При обновлении кеша в качестве буфера используется локальная переменная temp. Доступ к элементам кеша осуществляется извне осуществляется через итератор - getIterator. Псевдокод кеша
class Cache {
/** Список, хранящий кешированные данные */
private static volatile List list;
/* Обновить кеш */
public static void updateCache() {
// Буфер
List temp = new ArrayList();
// Заполнить буфер из БД ...
list = temp;
}
/** Получить итератор по кешу */
public static Iterator getIterator() {
return list.getIterator();
}
}
Можно ли утверждать, что раз операция присваивания является атомарной, то кеш потокобезопасный для чтения?
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости