料AboutJavaScriptを有効にして、ご利用ください。再利用されるオブジェクトを使って同期しない同期プリミティブの誤用は、並行処理に関する問題を生み出す大きな原因の一つである。再利用されるオブジェクトを使って同期を行うと、デッドロックや予期せぬ動作につながる場合がある。したがって、再利用されるオブジェクトを使って同期を行ってはならない。クラスのロックオブジェクトを使って同期を行っている。2つの値しかとらないため、ロックとしての使用には適さない。クラスのインスタンスを共有する。値に対応するインスタンスを参照している。値を使って同期を行った場合、ロックインスタンスが再利用され、システムは応答しなくなるかデッドロックに陥る可能性がある。オブジェクトをロックとして使用している。クラスと同様の理由でロックオブジェクトとして使用するには問題がある。プリミティブ型変数の値が1バイトで表現可能な場合、その値を持つラッパーオブジェクトのインスタンスは再利用される。実装には許されている。オブジェクトインスタンスは一意であり、再利用されない。一般に、データ型に関係なく、ボクシングした値を含むオブジェクトによるロックは安全ではない。固有ロックを使用して同期している。オブジェクトや同じ値を保持するボクシングされた整数と共有されることはない。このコードはルールに適合してはいるが、ボクシングされた整数をロックオブジェクトとして使ってもよいという間違った認識をプログラマに与えるかもしれず、コードの保守上問題になる恐れがある。宣言したロックオブジェクトを使った同期である。オブジェクトをロックに使用している。オブジェクトに等しいと判定される文字列がプールにすでに存在した場合は、プール内の該当する文字列が返される。オブジェクトへの参照が返される。おいてはグローバル変数のように振る舞う。定数によるロックと同じ再利用の問題が存在する。finalロックオブジェクトを使用する」を参照)。リテラルをロックに使用している。される(プール内で共有される)。したがって、このコードは前述の違反コード例と同じ問題を抱えている。インスタンスをロックに使用している。インスタンスやリテラルとは共有されないそれ自身の固有ロックを持つ。宣言されたロックオブジェクトを使って同期することである。宣言されたロックオブジェクトを使って同期している。インスタンスが有用なケースの一つである。finalロックオブジェクトを使用する」を参照。並行処理に関する脆弱性の多くは、不適切なロックオブジェクトを使用することから発生する。ロックオブジェクトの特性を十分考慮して選ぶことが重要である。L2自動検出このルールの違反を検出できる静的解析ツールは存在する。Implementations翻訳元これは以下のページを翻訳したものです。有このページは役に立ちましたか?javascriptを有効にすると、ご回答いただけます。その他のご意見はPCサイトにて入力願います。