RLock locked = redissonClient.getLock("bbccdd"); boolean isLock = locked.isLocked(); System.out.println("isLock = " + isLock); locked.lock(); isLock = locked.isLocked();
异常1情况:
java.lang.IllegalMonitorStateException: attempt to unlock lock, not locked by current thread by node id: f7919cb7-5b2f-4485-beea-0987ddb7bff5 thread-id: 162
1、在A线程中 获取到锁 : locked.lock();
在B线程中没有获取到锁,试图释放锁,将报异常1情况
2、在A线程中没有先获取锁的情况下 ,直接释放锁 locked.unlock();将报异常1情况
- Redisson的分布式锁只能通过创建锁的线程进行解锁,正所谓解铃还须系铃人,不是同一个线程解锁会报异常
- 因为Redisson是为锁而生,所以一开始设计的时候,为了防止死锁,默认锁的过期时间为30S