首先是pom文件
org.redisson redisson-spring-boot-starter3.16.4
官方推荐使用redisson
直接上代码
注册
@Autowired private RedissonClient redissonClient;
获取锁
RLock lock = redissonClient.getLock(Redismeta.LOCK_KEY); boolean getLock = false; try { getLock = lock.tryLock(2, 120, TimeUnit.SECONDS); if (getLock) { taskSync(); } else { error("上一次还未执行完"); } if (getLock && lock.isLocked()) { lock.unlock(); } } catch (InterruptedException interruptedException) { log.error("分布式锁加锁异常", interruptedException); Thread.currentThread().interrupt(); } finally { if (getLock && lock.isLocked()) { lock.unlock(); } }
解释说明
测试中发现使用
lock.lock();确实可以锁住不会并发执行。
但是第一个lock执行完之后第二个又开始执行,并不能达到仅执行一次的目的,所以此处使用tryLock
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)