これは当たり前のようですが、私はこれを正しく行っていることを確認したいと思います。null参照のロックを取得しようとすると、これは正しく機能しませんか?参照ではなくオブジェクトのプロパティを使用するためですか?
元
Object lock = null;
synchronized(lock)
{
}
これは当たり前のようですが、私はこれを正しく行っていることを確認したいと思います。null参照のロックを取得しようとすると、これは正しく機能しませんか?参照ではなくオブジェクトのプロパティを使用するためですか?
元
Object lock = null;
synchronized(lock)
{
}
null参照のロックを取得しようとすると、これは正しく機能しませんか?
それは正しいです。NullPointerException
を使用して同期しようとすると、が表示されますnull
。
参照ではなくオブジェクトのプロパティを使用するためですか?
ではない正確に。ロック状態は、問い合わせることができないため、通常の意味でのプロパティではありません。しかし、はい、状態はオブジェクトの一部です。
(しかし、考えてみてください。ロック状態が参照の一部になる可能性はありますか?もしそうなら、どのように同期するthis
か、またはオブジェクト参照をパラメーターとして渡すことができますか?参照はコピーとして渡されます...そして1つのコピーへの変更は他のコピーに伝播できません。また、ロック状態が伝播できない場合、参照の独自のコピーを持つ2つのスレッドは意味のある方法で同期できません。)
はい。同期はオブジェクト自体で行われます。