Redisson锁续期失败怎么通知主线程?-灵析社区

通了顺畅了

Redisson的看门狗实现中,对于续期失败的异常处理就是释放锁: ![image.png](https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241201/a81ddf4ba05f88cc5b7d751556b14536.png) > 见红框 也就是说主线程不会知道当前锁是否还有效,可能锁因为续期失败已经过期了,但主线程还在处理业务。 这种情况应该怎么处理呢?

阅读量:16

点赞量:0

问AI
主线程好像不会感知到。且如果续期失败,过了30秒,redis中的lock自动过期了,然后主线程在释放锁执行unlcok的时候会抛出异常。 关于这个点在这边文档中有提到 "https://cloud.tencent.com/developer/article/2012840" (https://link.segmentfault.com/?enc=KNiJTrc1TmWfz3s2njWpog%3D%3D.hMvGg5ditlqGp5mj1FVyCaCp3NmeKJnwIqQzb%2FEnAbjfuBnaNTJJE7dleufc%2BfkPIq0kElMEQFpxchhNYkTB0w%3D%3D) "image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241201/3b2f27306bb94f5fda2eba0f4496403f.png) 在这个测试案例中就是 模拟了通过重启 redisserver 来实现 续期失败的效果。finally中断言unlock收到了异常。 另外我猜测 没法通知,要想实现通知大概有两个思路吧, 一个是 续期失败的时候对持有锁的线程发起中断,但是中断要求业务线程自身要检查中断或者阻塞在可被中断的方法处,显然这对业务有了要求; 另外就是提供注册监听,续期失败的时候通知监听处理,redisson中好像没有这种监听机制。