Я новичок в использовании метода Map computeIfAbsent. Я обнаружил (в Java документах), что весь вызов метода выполняется атомарно. Я хотел бы знать (точнее, подтвердить), будет ли следующий фрагмент кода (внутри метода) выполняться атомарно.
ConcurrentMap<RunMode, Map<LocalDate, Map<Integer, Set<DomainObject>>>> myCache = new ConcurrentHashmap<>();
public void addToCache (RunMode runMode, LocalDate bizDate, DomainObject bean) {
Set<DomainObject> domainObjSet = myCache.computeIfAbsent(runMode, runModeMap-> new ConcurrentHashMap<>())
.computeIfAbsent(bizDate, bizDateMap-> new ConcurrentHashMap<>())
.computeIfAbsent(bean.getId(), domainSet-> Collections.synchronizedSet(new HashSet<>()).add(bean));
}