Привет, подскажите пожалуйста как работает volatile, в jsr 133 написано, что обращение к полю, помеченному как volatile, применяются те же инструкции, как и к sync методам, на чтение - monitor release, на запись - monitor acquire.
Я сделал вывод, что при использовании либо void sync doSmth() { … }, либо volatile someField, выполняются одинаковые инструкции, так ли это?
в jmm про "monitor release" и "monitor acquire" или про "sync" методы вроде бы ничего не говорится, там про happens before и т.д.
соответственно, все рассуждения должны проводиться используя happens before и прочие отношения, дабы не угадывать какие инструкции и действия реально совершает компилятор