Java线程可以在持有锁的同时获得锁定吗?

时间:2010-04-24 11:07:23

标签: java multithreading concurrency

如果一个线程持有 lock ,当线程需要进入同一个锁控制的另一个关键部分时会发生什么?

4 个答案:

答案 0 :(得分:7)

Java中的

Intrinsic locks(synchronized)是可重入的,因此JVM将识别当前线程已经拥有此锁并且它将继续。

还有explicit locks,它们是可重入的。

如果锁不可重入,则可以不使用递归方法。

答案 1 :(得分:1)

没有:系统能够确定哪个线程持有锁以避免线程自身阻塞。

答案 2 :(得分:0)

如果一个线程持有一个锁,那么它可以输入任何方法(同步或非同步),但是如果任何其他线程想要调用一个方法,那么这些方法应该是非同步的,或者它应该等待获取锁,如果它尝试调用同步方法。

答案 3 :(得分:0)

重新锁定

监视器将允许它,因为他们有归属感

资源锁

诸如信号量之类的

没有任何所有权感,因此如果您没有足够的资源可能导致死锁