4

当同一个线程试图获取它已经拥有 的锁时,实际上会发生什么?

4

2 回答 2

2

我猜你的问题是关于synchronized块/修饰符的语义。请参阅Java 语言规范。如果您的问题是关于特定实现的方式,那么您需要指定您想到的确切实现。但这是一种很好理解的技术,我看不出有什么理由。

于 2012-06-29T12:21:04.747 回答
1

引用自http://download.java.net/jdk7/archive/b123/docs/api/java/util/concurrent/locks/ReentrantLock.html

一种可重入互斥锁,其基本行为和语义与使用同步方法和语句访问的隐式 >monitor 锁相同,但具有扩展的 > 功能。

ReentrantLock 由上次成功锁定但尚未解锁的线程拥有。>当锁不被另一个线程拥有时,调用锁的线程将返回,成功获取锁。如果当前线程已经>拥有锁,该方法将立即返回。这可以使用方法 isHeldByCurrentThread() 和 getHoldCount() 来检查。

我同意 GrepCode 解释得很好

于 2012-06-29T12:15:40.040 回答