JMMが原子性と可視性と順序の問題を解決する方法

1.原子性

アトミックJVM自体に加えて、読み取りおよび書き込み操作の基本的なデータ型である缶synchronizedLockアトミシティを提供します。なぜならsynchronizedLockいつでも1つのスレッドだけがコードブロックにアクセスすることを保証できるからです。

2.可視性の問題

volatileキーワードは可視性を保証します。共有変数がvolatileによって変更されると、変更された値は他のスレッドによってすぐに確認されます。つまり、変更された値はすぐにメインメモリに更新されます。他のスレッドがそれを読み取る必要がある場合は、メモリに移動して新しい値を読み取ります値。

synchronizedまたLock、いつでも1つのスレッドのみが共有リソースにアクセスできることを保証し、ロックを解放する前に変更された変数をメモリにフラッシュできるため、可視性も保証できます。

3.注文の問題

秩序性は揮発性を介して保証することができます

synchronized・and・を介して順序性を確保できますLock·。明らかに、synchronizedとLockは、1つのスレッドが常に同期コードを実行することを保証します。

史上最も完全な並行プログラミングマインドマップ:https://www.processon.com/view/5b1f1ad7e4b03f9d251c06e5#map

おすすめ

転載: blog.csdn.net/fd2025/article/details/108333739