要是key超时后业务还没执行完咋办呢

来源:4-4 如何实现分布式锁

fenkapian

2020-03-31

请教一下,要是有线程成功调用了set方法,然后直到key过期,该线程需要执行的业务代码还没执行完。而这时其他线程又成功调用了set方法,访问了之前被锁住的同一资源,那是不是还是会出现线程不安全的问题

写回答

1回答

翔仔

2020-04-01

同学好,所以key的超时设置只是以防万一,通常需要根据系统得实际情况,也就是压测之后的响应请求最长时间的1.5倍进行设置。而且你设置足够长也没关系的,毕竟只有异常的情况会意外退出,才会导致锁在没有超时的情况下不被释放,而通常情况下,请求处理完之后,就会释放掉锁了,所以设置成一点无所谓。如果你设置了10分钟,处理还没完成,那么是不是处理有问题了,用户也不会去等10分钟呢。。

0
3
翔仔
回复
慕虎7161837
设置的时间特别长,但是你本身任务一结束,正常流程是会去在代码里面实现把锁给释放掉的呀,我们示例里面也是在代码流程正常结束后就会主动释放掉锁
2020-11-10
共3条回复

剑指Java面试-Offer直通车 百度资深面试官授课

招聘季即将到来,让百度资深面试官来为你的高薪Offer保驾护航

8427 学习 · 1870 问题

查看课程