场景:假如线程A获取分布式锁进入方法A,由于某种原因Hang住了 到了指定时间释放锁,这个时候线程B进入得到锁,这个时候线程B很顺利完成业务逻辑操作,然后释放掉锁,就在这个时候线程A开始继续往下执行代码,按照这个逻辑他最终会执行finally代码块 执行到释放锁的逻辑那么这个时候如果锁的值一样,很有可能会释放掉已经获取锁的线程持有的那把锁.那么该如何设计呢?答案很简单,可以把锁的值设为UUID,保证唯一,这样每个线程的锁的值都是不一样的!我们释放REDIS的锁 是通过执行LUA脚本实现的 if…