atomic operationは分割不可能に完了します。他のどのスレッドも中途半端な状態を見ません。memory visibilityは、あるスレッドの書き込みが別のスレッドから見えるかどうかです。memory barrierは順序を強制し、それらの書き込みが見えるようにします。 気にすべきはロックだけではありません。メモリモデルこそが問題です。
atomicity(原子性)
atomicな操作(例: fetch_add、compare-and-swap)は1つの分割不可能なステップとして実行されるため、raceがそれを分断することはありません。ハードウェアと言語は、完全なロックなしにカウンタやフラグ向けのatomicsを提供します。
();
counter.incrementAndGet();
