传统锁
1.Synchronized
jvm
关键字
分布式锁
1.Lock api
类库
手动释放锁 没办法手动释放锁 Redis的setnx命令来完成分布式锁,但是锁的过期时间没有办法确定,只能根据实际业务去预估
2.redission
- 线程一尝试去获取锁,拿到锁之后【锁的有效是30S】
-
- 在后台开启一个子线程【定时(每过10秒)去查询当前线程是否还持有锁,如果有,则给锁续命(延长锁到30S)】,直到主线程执行结束,手动释放锁
-
- 线程二尝试去获取锁,拿锁失败,会进行自旋【每隔一定时间去拿锁】,直到拿锁成功后去执行2
-
- 线程二尝试去获取锁,拿锁失败,会进行自旋【每隔一定时间去拿锁】,直到拿锁成功后去执行2
- 注意设置过期时间后,看门狗不在生效