# 1 楼答案 否,假设两个方法都在同一个类中(并且都是static或都不是static)。只有当试图进入的线程可以获得监视器对象的控制时,才会输入synchronized方法(例如this)。由于线程已经获取了监视器,因此它可以简单地进入第二种方法,而不需要任何进一步的麻烦
# 3 楼答案 这取决于: 如果这些是两个(或更多)不同对象上的同步方法 如果多个线程访问这些对象 如果这些对象的锁定顺序可能不同(在一种情况下为object1->;object2,而在另一种情况下为object2->;object1) 然后是的,你可以得到死锁 但是,如果您讨论的是同一对象上的同步方法,则不可能出现死锁:对象的监视器是可重入的:如果您已经持有监视器,则可以再次请求监视器(在同一对象上输入同步块)
# 1 楼答案
否,假设两个方法都在同一个类中(并且都是
static
或都不是static
)。只有当试图进入的线程可以获得监视器对象的控制时,才会输入synchronized
方法(例如this
)。由于线程已经获取了监视器,因此它可以简单地进入第二种方法,而不需要任何进一步的麻烦# 2 楼答案
如果
thread 1
获取了对A
的锁,并且还希望锁定B
。Thread 2
在B
上有一个锁,并且想要在A
上也有一个锁。 这是一个僵局。 否则,一切皆有可能# 3 楼答案
这取决于:
然后是的,你可以得到死锁
但是,如果您讨论的是同一对象上的同步方法,则不可能出现死锁:对象的监视器是可重入的:如果您已经持有监视器,则可以再次请求监视器(在同一对象上输入同步块)