如果一个线程持有 lock ,当线程需要进入同一个锁控制的另一个关键部分时会发生什么?
答案 0 :(得分:7)
Intrinsic locks(synchronized)是可重入的,因此JVM将识别当前线程已经拥有此锁并且它将继续。
还有explicit locks,它们是可重入的。
如果锁不可重入,则可以不使用递归方法。
答案 1 :(得分:1)
没有:系统能够确定哪个线程持有锁以避免线程自身阻塞。
答案 2 :(得分:0)
如果一个线程持有一个锁,那么它可以输入任何方法(同步或非同步),但是如果任何其他线程想要调用一个方法,那么这些方法应该是非同步的,或者它应该等待获取锁,如果它尝试调用同步方法。
答案 3 :(得分:0)
如监视器将允许它,因为他们有归属感
没有任何所有权感,因此如果您没有足够的资源可能导致死锁