0
我是否冒着下面的代碼發生死鎖的風險?有沒有更好/更安全的方法?起初,我想過把兩個鎖合併成一個,但是我可能在這裏推動太多,下面的代碼是安全和正確的。是否有可能使用兩個鎖死鎖,只有一個方法獲取兩個鎖而其他所有方法只獲取一個?
public void method1() {
lock1.lock();
//...
lock1.unlock();
}
public void method2() {
lock2.lock();
//...
lock2.unlock();
}
public void method3() {
lock1.lock();
lock2.lock();
// ...
lock2.unlock();
lock1.unlock();
}
這應該永遠不會死鎖,沒有。死鎖只會發生在2個線程中,每個線程獲得2個或更多鎖定。 – Gray
@Gary能否提供一個使用上面的例子來解決死鎖的例子? –
你明白什麼是僵局嗎?你懷疑你的代碼在哪裏? –