2011-06-10 18 views
1

可能重複:如果我調用wait()和notify(
Why wait should always be in synchronized block如果我在同步塊之外的對象上調用wait方法會發生什麼?

會發生什麼),notifyAll的()方法的同步之外? 它有什麼作用?

例如

Class Test(){ 
Test(){ 

我知道我寫空嘗試捕捉

try{ 
     wait(); 
     notify(); 
     notifyAll(); 
    }catch (Exception ex) 
    } 
} 
+7

當你嘗試它會發生什麼? – 2011-06-10 08:48:11

+3

如果你有一個空的catch塊,你永遠不會知道發生了什麼。永遠不要寫空的catch塊。 – Jesper 2011-06-10 08:51:38

+3

@Jesper:那麼,目前甚至沒有空白塊。 ;) – musiKk 2011-06-10 08:52:20

回答

3

你得到一個IllegalMonitorStateException

拋出:IllegalMonitorStateException - 如果 當前線程不是所有者 對象的監視器。

+0

它工作正常!我檢查了 。但爲什麼 ? – 2011-06-10 10:16:06

+0

@Nilesh Salpe,你不能等待/通知一個你沒有鎖定的物體,因爲那是鎖的設計工作原理。 – 2011-06-10 11:02:59

相關問題