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