2016 - 2024

感恩一路有你

java web java的可重入锁用在哪些场合?

浏览量:2953 时间:2021-04-04 04:23:02 作者:admin

java的可重入锁用在哪些场合?

你好,我是[不要随波逐流]。我很高兴为你回答。远程标准教育为您解答:重入锁是指同一个锁可以在一个线程中多次获得。例如,如果一个线程正在执行一个带有锁的方法,而该方法调用另一个需要相同锁的方法,那么该线程可以直接执行调用方法而不必重新获取锁。更多专业科普知识,请关注我。如果你喜欢我的回答,也请给我表扬或转发,你的鼓励是支持我写下来的动力,谢谢。

如何理解Java锁的可重入性?

可重入锁:支持重复输入的锁。这意味着锁可以支持线程对资源的重复锁定。

关键字“sychronized”隐式支持重入,例如使用sychronized修改的递归方法。在方法执行期间,执行线程在获取锁之后可以多次获取锁。

尽管reentrantlock不能像sychnronized关键字那样隐式地重新输入,但是在调用lock()方法时,获得锁的线程可以再次调用lock()方法来获得锁,而不会被阻止。

可重入锁的原理?

重入锁实现的原理或机制如下:

每个锁都与线程保持器和计数器相关联。当计数器为0时,表示锁没有被任何线程持有,那么任何线程都可以获得锁并调用相应的方法。当线程请求成功时,JVM将记录持有锁的线程,并将计数器设置为0 1。此时,如果其他线程请求锁,则必须等待;如果持有锁的线程再次请求锁,则可以再次获得锁,计数器将增加;当线程退出同步代码块时,计数器将减少;如果计数器为0,则释放锁。

分布式锁为什么要具备可重入性?

由于我们不能准确的知道锁的业务逻辑的耗时,并且根据当时机器的状态和各种原因,锁的业务逻辑的耗时不是一个固定的值,所以锁过期时间的设置不够准确。一旦redis在逻辑结束之前释放了线程a的锁,其他线程就可以获得该锁,就像锁逻辑一样。此时,线程a的逻辑执行未完成,因此锁逻辑由两个线程同时执行,仍然存在线程安全问题。为了解决这个问题,我们需要考虑重入锁。

java web java是什么 java字符串去重的方法

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。