Документация Oracle по атомарному доступу (на http://docs.oracle.com/javase/tutorial/essential/concurrency/atomic.html) гласит:
"переменная типа volatile устанавливает отношение« происходит до »... это привело к изменению. "
У меня проблемы с тем, чтобы обернуть голову вокруг этого. Я понимаю, как работают переменные (в> = Java 5), но мне интересно, как Java решает, какой побочный эффект «привел» к изменению изменчивой переменной.
Итак, я думаю, что мой вопрос: какие побочные эффекты дает эта гарантия?
EDIT:
Итак, я узнал, что если поток A изменяет энергозависимую переменную, а затем поток B читает ее, все записи из потока A, которые произошли до записи в энергозависимую переменную, «становятся связными» по отношению к потоку B (т.е. кэшированные значения переменных, на которые распространяется вышеупомянутая запись в потоке A, становятся недействительными в потоке B). Поправь меня, если я ошибаюсь.