Bug1: 解决分布式锁的误删问题
1.
由于我们设置了setnx的锁的ex过期时间,
如果当前线程的业务阻塞了太久, 锁直接释放了,其他线程乘虚而入获得了锁
当前线程业务完成后, 直接执行unlock,导致别的线程的锁被释放(但是在执行其业务逻辑)
然后又有别的进程拿到了锁,也执行业务逻辑,多个线程都突破了锁的限制,
使得集群下同一用户都能进行抢票等业务
从而导致分布式锁的不攻自破

原始逻辑

矛盾图
解决方法: 看看是不是自己的锁

Key:业务名
Value: uuid+threadId
然后每个线程进来有相同的key,但是jvm不同所以uuid不同
但是一条线程中uuid是用static修饰的,所以不变
然后通过redis获得的value与自己组成的uuid+threadId对比
就知道是不是自己的锁了
