关于双重防死锁的判断条件问题

来源:14-3 分布式锁双重防死锁演进

精慕门7498638

2019-05-29

双重防死锁演进的V3版本
这个位置if中,如果lockValueStr为null的话就会直接跳到else,记录没有获取到分布式锁。我觉得不太合理吧,虽然之前setnx没有获得锁才会进入这个判断逻辑,但是考虑这种情况:Tomcat1获取到了锁,正在执行定时任务,Tomcat2这时setnx获取锁失败,进入图中的判断逻辑上面String lockValueStr = …,获取lockValueStr,此时Tomcat1刚好执行完任务,delete键,此时lockValueStr=null,这时,Tomcat2应该是可以获得锁的啊,但是按照代码逻辑,这个时候就直接跳到else了!

写回答

1回答

geelylucky

2019-05-29

没错,可以在判断为空的时候再去尝试获取一下锁。赞!!!

1
1
精慕门7498638
非常感谢!
2019-06-11
共1条回复

Java企业级电商项目架构 Tomcat集群与Redis分布式

Tomcat集群+Redis分布式+代码重构+源码原理解析

2685 学习 · 947 问题

查看课程