主线程好像不会感知到。且如果续期失败,过了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中好像没有这种监听机制。