欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 社会 > Redission看门狗

Redission看门狗

2025/2/20 13:11:31 来源:https://blog.csdn.net/weixin_43076660/article/details/145636113  浏览:    关键词:Redission看门狗

在 Redisson 中,lock.tryLock() 和 lock.lock() 是两种不同的加锁方式,它们的行为有所不同:

  1. lock.lock():这是阻塞方法,当调用时,如果锁当前不可用,线程将被阻塞,直到获取到锁。如果锁被其他线程持有,当前线程会一直等待,直到锁被释放。

  2. lock.tryLock():这个方法是非阻塞的。它尝试获取锁,如果锁当前不可用,线程不会被阻塞,而是会立即返回一个布尔值来表示是否成功获取锁。

  3. lock.tryLock() 还有另外两种重载形式:

    lock.tryLock(long waitTime, long leaseTime, TimeUnit unit):这个方法尝试在指定的等待时间内获取锁。如果锁在等待时间内可用,则获取锁并返回 true。如果锁在等待时间内不可用,则返回 false。一旦获取到锁,锁会保持指定的租用时间(leaseTime),然后自动释放。

    lock.tryLock(long leaseTime, TimeUnit unit):这个方法尝试获取锁,如果锁当前不可用,线程会立即返回 false。如果锁可用,则获取锁并返回 true。锁会保持指定的租用时间(leaseTime),然后自动释放。

  4. 至于看门狗机制,Redisson 提供了一个自动的续期机制来防止死锁。当你使用 lock.lock() 或
    lock.tryLock(long leaseTime, TimeUnit unit)
    方法获取锁时,并且锁的租用时间(leaseTime)设置为 -1(即无限期),Redisson
    的看门狗机制会自动启动。看门狗会定期检查这个锁是否仍然被当前线程持有,如果持有,就会自动为这个锁续期。

  5. 如果你使用的是带有固定租用时间的 lock.tryLock(long leaseTime, TimeUnit unit)
    方法,看门狗机制不会自动续期。在这种情况下,锁会在指定的租用时间后自动释放,看门狗机制不会介入。

所以,看门狗机制是自动的,但它的续期行为取决于你获取锁的方式和锁的租用时间设置。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词