学习是最好的投资!
synchronizedキーワード
synchronized
揮発性キーワードをリストに追加します
今日は、可変オブジェクトの安全なリリースとアクセスに関する実践的な並行プログラミングを見たところです:安全なリリース:
静的初期化関数でオブジェクト参照を初期化します。
オブジェクトの参照を volatile または AtomicReference に保存します
オブジェクトの参照を、オブジェクトを正しく構築する最終型に保存します
ロックの範囲内でオブジェクトを保存します。
安全なアクセス:
スレッドが閉じられました
読み取り専用共有
スレッドセーフな共有、公開されたオブジェクトの内部アクセス方法はスレッドセーフであり、外部同期は必要ありません
オブジェクトを保護し、外部アクセスを制限して変更可能なオブジェクトを公開し、変更可能なオブジェクトにアクセスするためのインターフェイスを指定します。
static List<String> arrayList = new ArrayList<>();これは安全な公開の最初のルールに準拠しています 次に、最初の 3 つの状況ではリストに安全にアクセスしてはいけないため、外部の世界を制限することに頼るしかありません。オブジェクトの公開、つまりロック。
static List<String> arrayList = new ArrayList<>();
被験者の要求に応じて実装できますが、この要件の実装は非常に奇妙です。
この方法に加えて、join を渡して countdownlatch を渡すことによっても実現できます。本当に主題のようになりたい場合は、マルチスレッド
join
countdownlatch
スレッド プールの invokeAll メソッドを使用すると、結果の順序が、
リーリー
を使用しますsynchronized
キーワード揮発性キーワードをリストに追加します
今日は、可変オブジェクトの安全なリリースとアクセスに関する実践的な並行プログラミングを見たところです:
安全なリリース:
静的初期化関数でオブジェクト参照を初期化します。
オブジェクトの参照を volatile または AtomicReference に保存します
オブジェクトの参照を、オブジェクトを正しく構築する最終型に保存します
ロックの範囲内でオブジェクトを保存します。
安全なアクセス:
スレッドが閉じられました
読み取り専用共有
スレッドセーフな共有、公開されたオブジェクトの内部アクセス方法はスレッドセーフであり、外部同期は必要ありません
オブジェクトを保護し、外部アクセスを制限して変更可能なオブジェクトを公開し、変更可能なオブジェクトにアクセスするためのインターフェイスを指定します。
static List<String> arrayList = new ArrayList<>();
これは安全な公開の最初のルールに準拠しています次に、最初の 3 つの状況ではリストに安全にアクセスしてはいけないため、外部の世界を制限することに頼るしかありません。オブジェクトの公開、つまりロック。
被験者の要求に応じて実装できますが、この要件の実装は非常に奇妙です。
リーリーこの方法に加えて、
を使用しない方がよいでしょう。join
を渡してcountdownlatch
を渡すことによっても実現できます。本当に主題のようになりたい場合は、マルチスレッドスレッド プールの invokeAll メソッドを使用すると、結果の順序が、
に渡されたパラメータの順序と一致していることを確認できます。リーリー