Redis分布式锁问题

Redis分布式锁问题,订单查询时,线程20在06:54:06.878 时查询订单 ac6743fbbd884c29a0c64c9b632d2cc4 支付状态,获取订单 ac6743fbbd884c29a0c64c9b632d2cc4 锁,8秒后自动释放;

线程4在06:54:19.653 时查询订单ac6743fbbd884c29a0c64c9b632d2cc4 支付状态,由于前一个线程的锁已经自动释放,所以线程4获取锁成功;

之后线程20在 06:54:31.045 执行代码完毕,准备释放锁,此时报异常:java.lang.IllegalMonitorStateException: attempt to unlock lock, not locked by current thread by node id: 19a3abdc-490a-423e-bd26-d38b1e4da82b thread-id: 105475

由于当前锁不是被当前线程20锁定,而是被线程4锁定,所以报异常;

解决方案
1、延长锁自动释放时间
2、去除锁自动释放,而是改为到finally代码块去释放锁

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值