synchronization action: "Synchronization actions, which are: Volatile read. A volatile read of a variable.Volatile write. A volatile write of a variable."
В 17.4.4. Synchronization Order так же пишут, что synchronization actions исполняются в порядке program order, то есть их фактическое выполнение не может противоречить коду программы: "A synchronization order is a total order over all of the synchronization actions of an execution. For each thread t, the synchronization order of the synchronization actions (§17.4.2) in t is consistent with the program order (§17.4.3) of t."
В моем представлении синхронизация, выполенная в произвольном порядке, будет очень даже противоречить коду программы, т.е. нарушать program order; но согласно процитированному выше program order нарушен быть не может.
Соответственно я понимаю эти две цитаты вместе как "запись в volatile не может быть reordered согласно JLS".
Похоже на правду?
Да мне Лёша уже усё объяснил — выше ссылка на мой fb с огромным тредом
Обсуждают сегодня