當調用super.wait()
,類似下面 -當調用wait()的超級
synchronized (this)
{
while (true)
{
try
{
super.wait();
}
catch (InterruptedException e)
{
return;
}
}
}
當調用super.wait()
,類似下面 -當調用wait()的超級
synchronized (this)
{
while (true)
{
try
{
super.wait();
}
catch (InterruptedException e)
{
return;
}
}
}
Object.wait()
宣佈最終的,不能被重寫。 所以super.wait()
始終意味着只是wait()
但稍長一點。
沒有嘗試覆蓋原始海報的代碼。 –
我在說,在這種情況下,wait和super.wait是等價的,因爲wait()總是在超類中。 – Yuri
你是什麼意思「......但有點長」? –
wait()
必須在其上它否則會導致java.lang.IllegalMonitorStateException
同一對象上調用它應該是this.wait()
「這個」和「超級」都指的是同一個對象。 this.foo()和super.foo()之間的區別僅在對象的類和類的祖先的類中定義了foo()方法時才起作用。然後「超級」允許調用祖先的函數版本。正常的用例是當你將this.foo()定義爲繼承函數的包裝時。 –
在我們回答您需要ATLEAST說,你到底想達到什麼目的? –
好吧,這是一個奇怪的構造,很可能是一個錯誤。 但它仍然有效。 爲何全部倒票? – Yuri
嗯,我在這篇文章中看到了@bdonlan的答案之一[link](http://stackoverflow.com/questions/6114320/java-monitors-how-to-know-if-waitlong-timeout-ended逐超時或逐通知)。這是我第一次看到等待被超級引用。所以出於好奇,問了這個問題。 – user3172924