我说的对吗,在以下情况下应该会发生死锁:
对象P调用对象A的同步方法,
调用对象B的同步方法,
调用对象A的同步方法。
抱歉,如果我看起来很愚蠢,很可能确实如此。但这就是我问的原因。谢谢!
最佳答案
根据您提供的信息 - 不,不会发生死锁:
首先,您没有提到多线程。单个线程不会导致死锁。但我们假设您有多个线程。
因此,如果任何其他对象从不同的线程以相反的顺序调用其中一些方法,则可能会发生死锁。
情况解释如下:Thread-1
获得进入methodA
所需的锁,然后尝试进入methodB
。如果同时另一个线程 - Thread-2
调用 methodB
并获取其锁,则尝试进入 methodA
,但是 Thread-1
已经拥有锁,因此 Thread-2
等待。但是,Thread-1
无法进入 methodB
,因为 Thread-2
拥有锁。他们永远等待(死锁)。
关于java - 这种情况下会出现死锁吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3679736/