ブロックの外側に決して出ないことが保証されます。それ以降では正しく動作するようになります。(これが真実であることを、少し時間をかけて確認してみてください。使う際の重要な問題を示しています。設定済みかどうか、まだ判りません。変更される前に行われたからです。ついては何も想定できません。書き込みの後に行われているからです。これは一般的には動作しません。フィールドを使ってやりとりする必要があります。設定しなければなりません。(これが動作しないという事実は、コードを見ればおそらく明らかでしょう。やめた方がよいということです。関数を使ってください。効率的な動作をします。これらは必ず、正しく使ってください。しないよう気をつけてください。アトミック関数を直接使うのは避けた方が良いです。大した節約にはならないでしょう。正しく動くことが判っている既存のコードライブラリを探すことです)。非常に注意が必要です。並行的な問題が近々発生するというシグナルかもしれません。パッケージの適切なユーティリィクラスを使うというのが通常、ベストアンサーです。上で十分にテストされています。安全なのは、クラスを不変にすることです。保持しているデータを変更することは出来ません。それにより、あらゆる同期の問題を回避出来ます。やり方が掲載されています。宣言の重要性には注意してください。あらゆるフィールドを保護するべきです。スレッド間のやりとりを理解するために多大な注意を払わなければなりません。宣言は、よくある並行プログラミングの誤りからあなたを救ってくれるわけではありません。問題に関連した不可思議なエラーを回避するためには役立つでしょう。すべてのスレッドから見えるようになります。これにより、不変クラスのフィールドの正しい同期が保証されます。この保証は適用されません。安全な初期化の慣習に従う必要があります。いくつか便利な保証がなされています。その新しいスレッドから見えるようになります。見えるようになります。余計な同期を行う必要はないということです。そのスレッドプールの実装によります。ライブラリによって保証されています。それによって起床したスレッドから見えることも保証されています。言語のスレッドとモニタにも、それぞれ対応する操作について、同様の保証があります。アトミック操作の洗練されたセットが含まれる方向に進化しつつあります。含む、共通のデータ型に対する操作が網羅的に定義されます。仕様書へのポインタがあるので、参照してください。それほど深く潜り込んではいません。これは非常に幅広く、そして深いトピックです。いくつかの領域については、さらなる探索が必要でしょう。他の基礎的な概念について学ぶ。本当は何を意味しているのかを理解することは困難です。)コンパイラがコードを並び替えるとき、何が許されて何が許されないのかを調査する。仕様書には期待した結果が得られなくなる合法的な変換の素晴らしい例がいくつかあります。不変クラスを書く方法について調べてみる。(単に「コンストラクタの完了後に何も変更しない」だけのことではありません。並行性の節にある推奨事項をよく頭に入れる。オーバーライドされるメソッドを呼ぶのは避けるべきです。どんな種類のバリアが使用できるのかを理解する。ついても調べてみましょう。一通り読み、どんなものがあるかを見てみる。平行処理用アノテーションの使用も考慮してみましょう。これらのトピックに付いて説明しているもっと良いドキュメントやウェブサイトへのリンクがあります。たくさんの「奇妙な」事柄について、説明しています。実例を見るのが良いでしょう。テストプログラムがいくつかあります。以下のようなものです。