关于A线程删除B线程上的Redis锁的问题
来源:4-5 Redis原生实现分布式锁
慕粉4331336
2021-04-05
这边老师使用了Thread Id来去在解锁的时候自己判断一下是否是自己,否则别删除,但是我想这似乎依然不能解决两个线程同时操作的问题,假如Thread A获取到了锁,然后由于GC停顿或者是等待长时间的IO,在未执行任何任务之前停止运行,导致失去了锁,Thread B获取到了锁,开始执行自己临界区的任务,此时A停顿结束,开始也执行自己的任务,这样也会导致临界区被同时执行,这样的情况如何去处理
写回答
1回答
-
InCowboy
2021-04-05
看的很仔细,这个得一个一个解决比如提到的锁的过期问题,在Redisson里面有一个watch dog的机制就是专门给锁“续命”的,至于你说到的gc,就是比如redis内存满了吧,那么这情况只能通过监控提醒了
042021-04-07
相似问题