我正在刷我的Java在練習中被問到這個問題。以下情況如何導致僵局?這怎麼會導致死鎖?
private Object sync = new Object();
public void methodA() throws InterruptedException {
synchronized(this.sync) {
Thread.sleep(1000);
}
}
public void methodB() throws InterruptedException {
synchronized(this.sync) {
this.methodA();
}
}
我的猜測是,如果調用的methodB當了methodA它Thread.sleep代碼函數去,這兩個方法將啓動級聯,並導致不確定的睡眠?
想法?
感謝您的答案。我開始更好地理解這一點。不過,我確實有另一個問題,但我不想繼續發佈任何東西到SO。你可以直接到達嗎?非常感謝幫忙。 – matcartmill 2014-10-30 23:28:59