オブジェクト内のintフィールドへのアトミックなアクセスが必要な場合は、フィールドをAtomicIntegerとして宣言するだけで十分ですか、AtomicIntegerFieldUpdaterを使用する必要がありますか? (理由は?)java - オブジェクト内のフィールドへのアトミックアクセス
5
A
答えて
6
AtomicInteger
を使用すれば十分です。原子updatersはvolatile
フィールドで使用します。プライマリユースケースは、原子アクセスを必要とする多数のフィールドを持つデータ構造です。フィールド・アップデーターを使用して、フィールドごとにAtomicInteger
リファレンスを持たずに、アトミック・セマンティクスを持つフィールドを使用します。
詳細な説明は、this linkを参照してください。 biziclopさんのコメントに加えて
0
(リンクを参照してください):
Are java primitive ints atomic by design or by accident?
あなたはすでにこれに出くわしていませんでした念のため。
1
AtomicInteger
であり、友人は通常は十分であるべきであり、反射などのハッカーを伴わないので一般的に好ましい。
AtomicIntegerFieldUpdater
は、オブジェクトの合計数を減らすため、同じものを更新する必要のあるインスタンスが多い場合に役立ちます。ストレートな読み書き以外の操作がまれである場合は、特に便利です。例えば、AtomicReferenceFieldUpdater
は、attachメソッドではjava.nio
で使用されます。これは一般に1回(get-and-setとして公開)設定され、何度も読み込まれます。
関連する問題
- 1. Java Set内のオブジェクトの可変フィールド
- 2. Javaオブジェクト内の配列へのアクセス
- 3. Pythonのアトミックアクセス(スレッドに関連)
- 4. HbaseへのJavaオブジェクト
- 5. Java - オブジェクト内の同じデータ型の複数のフィールド
- 6. Java Beanフィールドのオブジェクト配列
- 7. 配列内のオブジェクトのフィールドにアクセスするJava
- 8. Javaオブジェクト - オブジェクト内
- 9. データベースへのJavaオブジェクトのマッピング
- 10. カスタムクラスファイル内のJava WebのHttpServletRequest/Responseオブジェクトへのアクセス
- 11. クラス内のJavaフィールドとアクセサメソッド
- 12. cからjavaへのオブジェクト
- 13. 行オブジェクトのフィールドへの参照
- 14. 非依存オブジェクトのフィールドへのバインド
- 15. JSON情報へのアクセス:オブジェクト内のオブジェクト
- 16. フィールド内のグリッドビューの行データへのアクセス
- 17. C++のマップ内のオブジェクト内のオブジェクトのメンバ関数へのアクセス
- 18. 配列内のオブジェクトの配列内のオブジェクトへの参照
- 19. Unmarshalオブジェクト内のJavaループ
- 20. Firebaseデータ構造からJAVAオブジェクトへのマッピング時に認識されないフィールド
- 21. Javaファイルへのオブジェクトの保存
- 22. javaオブジェクトへのsoap xmlの応答
- 23. Javaの不変オブジェクトとデータへのアクセス
- 24. javaのjsonオブジェクトへのint配列
- 25. JavaからC#へのオブジェクトの転送
- 26. Mozilla RhinoのJavaオブジェクトへのキャスト
- 27. Javaの場合、同期オブジェクトへのアクセス
- 28. GraphicalオブジェクトへのJavaエンティティのマッピング
- 29. JavaオブジェクトへのXMLの解析
- 30. Java Gsonオブジェクト内のリストから選択したフィールドの逆シリアル化
アトミックアクセスを定義します。アトミックにする操作の順序は何ですか? – biziclop
複数のスレッドがフィールドを増減します。 – lgp