4

同じスレッドが既に所有して いるロックを取得しようとすると、実際にはどうなりますか?

4

2 に答える 2

2

synchronizedあなたの質問は、ブロック/修飾子のセマンティクスに関するものだと思います。Java 言語仕様を参照してください。質問が特定の実装の方法に関するものである場合は、念頭に置いている正確な実装を指定する必要があります。しかし、これは十分に理解された手法であるため、その理由はわかりません。

于 2012-06-29T12:21:04.747 に答える
1

http://download.java.net/jdk7/archive/b123/docs/api/java/util/concurrent/locks/ReentrantLock.htmlからの引用

同期されたメソッドとステートメントを使用してアクセスされる暗黙の >monitor ロックと同じ基本的な動作とセマンティクスを持つ再入可能な相互排他ロックですが、拡張された > 機能があります。

ReentrantLock は、最後にロックに成功したが、まだロックを解除していないスレッドによって所有されます。>ロックを呼び出すスレッドは、ロックが別のスレッドによって所有されていない場合に、正常にロックを取得して戻ります。現在のスレッドがすでにロックを所有している場合、メソッドはすぐに戻ります。これは、メソッド isHeldByCurrentThread() および getHoldCount() を使用して確認できます。

GrepCode が非常によく説明していることに同意します

于 2012-06-29T12:15:40.040 に答える