分布式锁里lockValue的判断
来源:14-3 分布式锁双重防死锁演进
慕粉1469778543
2018-02-06
geely老师,这里为什么要对lockValueStr进行一个非空判断呢。
如果lockValueStr为null,那应该代表当前是没锁的,可以安全加锁. 那为什么lockValueStr为null会跳进else里呢
写回答
1回答
-
Geely
2018-02-06
你好,同学,这是一个非常好的问题。是因为分布式锁那个key肯定会有可能消失的,如果消失了,get出来的就是null。 如果不为null,所以判断这个时间可以理解对吧。然后就是咱们这if是个条件,还有一个时间戳判断,于是首先防止NPE,做了一个非空判断。合并到一起判断了。
如果if ==null 直接获取锁也是可以的。那这就是一个无限循环了,为何不交给这次定时任务自己递归呢。
这里还有一个自旋锁的概念,对于定时任务,不要用自旋锁,最好是给结束的条件的。
222020-08-23
相似问题