ReentrantLock允许线程递归地获取相同的锁,以便在连续的锁/解锁时增加和减少锁计数。然而,在将锁计数释放到其他线程之前,必须将锁计数减为零。
为什么或者在什么情况下,我要编写代码来递归地获取锁?
我能看到的唯一一点就是让我们更方便地编写递归代码,其中一个方法(在它的执行过程中获得一个锁)被递归地调用。
在其他情况下,通过线程递归/重复获取锁会有用吗?
对问题的澄清:
发布于 2014-10-24 06:54:28
不如更好地搜索:this should be helpful
重入锁定用例:
可重入锁的应用程序示例(有些是通用的和人为的)可能是:
在这种情况下,跟踪您已经获得的锁是很昂贵的。假设您想要在节点级别执行锁定,则重新进入锁定机制可以减轻判断您以前是否访问过某个节点的需要。您可以盲目地锁定节点,也许在弹出队列后将其解锁。
https://stackoverflow.com/questions/26542741
复制相似问题