关于双重防死锁的判断条件问题
来源:14-3 分布式锁双重防死锁演进

精慕门7498638
2019-05-29
这个位置if中,如果lockValueStr为null的话就会直接跳到else,记录没有获取到分布式锁。我觉得不太合理吧,虽然之前setnx没有获得锁才会进入这个判断逻辑,但是考虑这种情况:Tomcat1获取到了锁,正在执行定时任务,Tomcat2这时setnx获取锁失败,进入图中的判断逻辑上面String lockValueStr = …,获取lockValueStr,此时Tomcat1刚好执行完任务,delete键,此时lockValueStr=null,这时,Tomcat2应该是可以获得锁的啊,但是按照代码逻辑,这个时候就直接跳到else了!
写回答
1回答
-
没错,可以在判断为空的时候再去尝试获取一下锁。赞!!!
112019-06-11
相似问题