メモリバリアとJavaコードの通常の落とし穴に関する優れたオンライン紹介を探しています。
- 使用
synchronized
頻度が高すぎる、または使用頻度が不十分 - 使用するタイミング
volatile
とfinal
- ダブルチェックロック
- 等
一般的な問題 (複数のスレッドがアクセスできるマップの作成や、値が遅延して追加される場所など) を解決する方法の動作や例を示すコードに特に興味があります。
メモリバリアとJavaコードの通常の落とし穴に関する優れたオンライン紹介を探しています。
synchronized
頻度が高すぎる、または使用頻度が不十分volatile
とfinal
一般的な問題 (複数のスレッドがアクセスできるマップの作成や、値が遅延して追加される場所など) を解決する方法の動作や例を示すコードに特に興味があります。
MartinThomsonによるこの記事は非常に役立つかもしれません。
あなたがオンラインで言ったことは知っていますが、Java Concurrency In Practiceは最近のJava 並行性ガイドです。
CPU の観点からこれについて詳しく知りたい場合 (どのアセンブラー コードが生成され、JVM がバイト コードを最適化できるか)、次の記事が興味深いかもしれません: Memory Barriers and JVM Concurrency (InfoQ)