Если у меня есть что-то вроде:
AtomicReference<String> atomicReference = new AtomicReference<>("abc");
У меня есть 2 потока, выполняющих код:
Поток 1: atomicReference.compareAndSet("abc", "def")
Поток 2: atomicReference.compareAndSet("abc", "efg")
Может ли быть случай, когда оба потока одновременно превышают это значение и находят объявленное значение "ab c", и оба выполняют метод или если один поток превысит сравнение, а другому придется ждать, пока он не завершится (в основном какой-то механизм блокировки)?