2012-04-16 8 views

答えて

4

私はnull参照にロックを達成しようとすると、これは正しく動作しませんか?

これは間違いありません。 nullを使用して同期しようとすると、NullPointerExceptionが表示されます。

オブジェクトのプロパティを参照で使用しているので、

正確ではありません。あなたがそれを調べる方法がないので、ロック状態は通常の意味でのプロパティではありません。しかし、はい、状態はオブジェクトの一部です。

(しかし、それについて考えてみましょうロック状態が参照の一部である可能性はありますか?それがあった場合、thisまたはオブジェクト参照がパラメータとして渡されるとどうなりますか?参照はコピーとして渡されますロック状態が伝播できない場合、参照のコピーを持つ2つのスレッドは、意味のある方法で同期することはできません。)

+0

ロック状態は、通常、オブジェクトのヘッダに(部分的に)表されますが、これは実装に依存します。 JITコンパイラは、ロックをロックまたは解放するときに必要なセマンティクスを実装するネイティブ命令を発行します。これらは実装にも依存します。 –

3

はい。同期はオブジェクト自体に行われます。

関連する問題