老师,还是没明白wait_time的大小为何会导致多个tomcat获得锁,我感觉没有关系啊,可能我理解的不对
来源:16-4 Redisson分布式锁实战-2:解决wait_time之坑
慕九州5775722
2018-04-13
写回答
1回答
-
假如tomcat1和tomcat2同时在执行closeOrderTaskV4,tomcat1竞争到锁了,tomcat2没有竞争到
如果wait_time设的是0,那tomcat2没竞争到锁就直接退出closeOrderTaskV4了。
如果wait_time设的是1秒,而执行closeOrderTaskV4的时间需要10秒,那tomcat2在等待1秒后就会退出;但如果执行closeOrderTaskV4的时间很短,比如100毫秒,小于wait_time设置的1秒,这时tomcat1执行完退出了,锁就释放了,tomcat2就会获得到这个锁了,也就会把closeOrderTaskV4再执行一次。。。
这是只有2个tomcat在运行的情况,如果有更多个呢?等于t+0ms是tomcat1执行,t+100ms是tomcat2执行,t+300ms是tomcat3执行....
342018-06-17
相似问题