Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
可重入性是如何在Java中实现的?_Java_Concurrency - Fatal编程技术网

可重入性是如何在Java中实现的?

可重入性是如何在Java中实现的?,java,concurrency,Java,Concurrency,当同一线程试图获取它已经拥有的锁时,实际会发生什么 引用 可重入互斥锁,其基本行为和语义与使用同步方法和语句访问的隐式>监视器锁相同,但具有扩展>功能 ReentrantLock归上次成功锁定但尚未解锁的线程所有。>当锁不属于另一个线程时,调用锁的线程将返回并成功获取锁。如果当前线程已>拥有锁,则该方法将立即返回。这可以使用方法isHeldByCurrentThread()和getHoldCount()进行检查 我同意GrepCode对它的解释很好我想你的问题是关于synchronized块/修

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

引用

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

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


我同意GrepCode对它的解释很好

我想你的问题是关于
synchronized
块/修饰符的语义。请参阅。如果您的问题是关于特定实现的实现方式,那么您需要指定您心目中的确切实现。但这是一个很好理解的技巧,我看不出有什么原因。

为什么会投反对票?这是一篇重复的帖子吗?你能澄清一下:你是指可重入锁定还是你指的是监视器是可重入的(同步块)?@assylias现在没有意义了,因为在这两种假设下已经有了答案:)@MarkoTopolnik我忍不住好奇:-)Subhara,监视器和锁不是一回事。你在监视器上获得了一个锁。您的术语完全符合Java语言规范中讨论
synchronized
关键字语义的术语,顺便说一句。没有符号不是这个问题的目的。无论如何,谢谢你的回答。那么这是关于
java.util.concurrent
API的?好的,那么你已经被其他的答案覆盖了。不过,短语“获取锁”指的是Java对线程同步的一流支持。