一、实现相关类
RetryStrategy:重试策略接口,含是否重试及重试次数;获取重试时间间隔两个接口。
DefaultRetryStrategy:默认重试策略,设置默认重试次数3次,重试间隔100ms。
RedisLock:加锁及释放锁,实质即操作redis set key 和del key;
SimpleRedisLock:调用redisLock加锁,加锁后执行lockCode代码(加锁后需执行的代码逻辑),并在加锁失败后判断是否有重试逻辑。
二、加锁流程
设计巧妙之处:
1、采用LockCode函数式接口承载加锁后需执行的业务代码逻辑,作为入参传入excute方法
2、excute中,采用循环加锁成功后执行lockCode.run完毕后,return;加锁失败判断是否传入重试策略,具体通过当前线程sleep重试策略中重试