我正在刷我的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