1. Обзор реентерабельных блокировок чтения-записи
Java-объект Redisson с распределенной реентерабельной блокировкой чтения-записи (RReadWriteLock) реализует интерфейс java.util.concurrent.locks.ReadWriteLock. И блокировка чтения, и блокировка записи наследуют интерфейс RLock.
Распределенные реентерабельные блокировки чтения-записи позволяют одновременно блокировать несколько блокировок чтения и одну блокировку записи .
2. Практика
Использование следующее:
RReadWriteLock rwlock = redisson.getReadWriteLock("锁的名字");
// 最常见的使用方法
rwlock.readLock().lock();
// 或
rwlock.writeLock().lock();
или же
// 10秒钟以后自动解锁
// 无需调用unlock方法手动解锁
rwlock.readLock().lock(10, TimeUnit.SECONDS);
// 或
rwlock.writeLock().lock(10, TimeUnit.SECONDS);
// 尝试加锁,最多等待100秒,上锁以后10秒自动解锁
boolean res = rwlock.readLock().tryLock(100, 10, TimeUnit.SECONDS);
// 或
boolean res = rwlock.writeLock().tryLock(100, 10, TimeUnit.SECONDS);
...
lock.unlock();