如何在Java中实现重入?

时间:2012-06-29 11:49:40

标签: java concurrency

当同一个线程试图获取它已经拥有的 lock 时会发生什么?

3 个答案:

答案 0 :(得分:4)

看看GrepCode。这是一个非常好的起点。代码记录得非常好。它解释得比我好得多。

答案 1 :(得分:2)

我猜你的问题是关于synchronized块/修饰符的语义。请参阅Java Language Specification。如果您的问题是关于特定实现的方式,那么您需要指定您想到的确切实现。但这是一个众所周知的技术,我没有理由这样做。

答案 2 :(得分:1)

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

  

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

     

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

我同意GrepCode非常好地解释