在这些Java情况下会发生死锁 1-
synchronized(obj) {
obj.syncMethod(); // the method signature: public synchronized void syncMethod() {...}
}
2-
synchronized(obj) {
if (condition)
throw new Exception(); // deadlock because obj lock is not released?
// do other stuff
}
谢谢。
答案 0 :(得分:2)
不会发生死锁。您已经锁定 obj 。
如果抛出异常,则释放锁定。请参阅此处的问题:
Side effects of throwing an exception inside a synchronized clause?
答案 1 :(得分:1)
答案 2 :(得分:0)
如果您没有在synchronized
块中捕获异常,那么您的锁将被释放并且不会发生死锁。有关详细信息,请参阅here。