1.原子性
アトミックJVM自体に加えて、読み取りおよび書き込み操作の基本的なデータ型である缶synchronized
とLock
アトミシティを提供します。なぜならsynchronized
、Lock
いつでも1つのスレッドだけがコードブロックにアクセスすることを保証できるからです。
2.可視性の問題
volatile
キーワードは可視性を保証します。共有変数がvolatileによって変更されると、変更された値は他のスレッドによってすぐに確認されます。つまり、変更された値はすぐにメインメモリに更新されます。他のスレッドがそれを読み取る必要がある場合は、メモリに移動して新しい値を読み取ります値。
synchronized
またLock
、いつでも1つのスレッドのみが共有リソースにアクセスできることを保証し、ロックを解放する前に変更された変数をメモリにフラッシュできるため、可視性も保証できます。
3.注文の問題
秩序性は揮発性を介して保証することができます
synchronized
・and・を介して順序性を確保できますLock·
。明らかに、synchronizedとLockは、1つのスレッドが常に同期コードを実行することを保証します。
史上最も完全な並行プログラミングマインドマップ:https://www.processon.com/view/5b1f1ad7e4b03f9d251c06e5#map