私はこれら2つの説明について非常に混乱しています:
- 「wait メソッドは呼び出しスレッドをブロックし、モニター ロックを放棄します」
- 「notify メソッドは 1 つの待機スレッドのブロックを解除しますが、モニター ロックを放棄しません」
ここに私の質問があります:
Java の各オブジェクトにロックがあることは知っていますが、「モニター ロック」とはどういう意味ですか? オブジェクトのロックと同じですか?
なぜ通知メソッドはモニターロックを放棄する必要があるのですか?
次のコードでオブジェクトを待機させようとすると:
class simpleTask extends Thread { int waitingTime; public simpleTask(int waitingTime) { this.waitingTime = waitingTime; } public void run() { synchronized(this) // this is a reference of current object { try { this.wait(waitingTime); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
上記の最初の説明のように、現在のオブジェクトが synchronized キーワードによってブロックされ、その後 wait メソッドがロックを解放するということですか?