Уместно ли использовать AtomicReference.compareAndSet для установки ссылки на результаты вызова базы данных?

Я реализую простой кэш с кешем, хранящимся как AtomicReference.

private AtomicReference cacheData;

Объект кэша должен заполняться (лениво) из таблицы базы данных.

Я предоставляю метод для возврата данных кэша вызывающей стороне, но если данные нулевые (т.е. не загружены), тогда код должен загрузить данные из базы данных. Чтобы избежать синхронизации, я подумал об использовании метода compareAndSet ():

public Object getCacheData() {
  cacheData.compareAndSet(null, getDataFromDatabase()); // atomic reload only if data not set!
  return Collections.unmodifiableMap(cacheData.get());
}

Это нормально, чтобы использовать CompareAndSet таким образом, т.е. включить вызов базы данных как часть атомарного действия? Это лучше / хуже, чем просто синхронизировать метод?

Большое спасибо за любые советы ..

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

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