これは明らかですが、これを正しく実行していることを確認します。 null参照でロックしようとすると、これは正しく動作しません。それはオブジェクトのプロパティを参照ではないので使用しますか?オブジェクト参照をミューテックスロックとして使用する
元
Object lock = null;
synchronized(lock)
{
}
これは明らかですが、これを正しく実行していることを確認します。 null参照でロックしようとすると、これは正しく動作しません。それはオブジェクトのプロパティを参照ではないので使用しますか?オブジェクト参照をミューテックスロックとして使用する
元
Object lock = null;
synchronized(lock)
{
}
私はnull参照にロックを達成しようとすると、これは正しく動作しませんか?
これは間違いありません。 null
を使用して同期しようとすると、NullPointerException
が表示されます。
オブジェクトのプロパティを参照で使用しているので、
正確ではありません。あなたがそれを調べる方法がないので、ロック状態は通常の意味でのプロパティではありません。しかし、はい、状態はオブジェクトの一部です。
(しかし、それについて考えてみましょうロック状態が参照の一部である可能性はありますか?それがあった場合、this
またはオブジェクト参照がパラメータとして渡されるとどうなりますか?参照はコピーとして渡されますロック状態が伝播できない場合、参照のコピーを持つ2つのスレッドは、意味のある方法で同期することはできません。)
はい。同期はオブジェクト自体に行われます。
ロック状態は、通常、オブジェクトのヘッダに(部分的に)表されますが、これは実装に依存します。 JITコンパイラは、ロックをロックまたは解放するときに必要なセマンティクスを実装するネイティブ命令を発行します。これらは実装にも依存します。 –