Замок Redisson Fair Lock

1. Обзор Fair Lock

Распределенная реентерабельная блокировка Redisson также является своего рода объектом RLock, который реализует интерфейс java.util.concurrent.locks.Lock. Он также предоставляет асинхронный (Async), отражающий (Reactive) и стандартные интерфейсы RxJava2. Это гарантирует, что когда несколько клиентских потоков Redisson запрашивают блокировки одновременно , им предоставляется приоритет для потока, который сделал запрос первым . Все потоки запросов будут помещены в очередь. Когда поток выходит из строя, Redisson будет ждать 5 секунд, прежде чем перейти к следующему потоку , то есть, если первые 5 потоков находятся в состоянии ожидания, то следующий поток будет ждать Минимум 25 секунд.

2. Практика

// 10秒钟以后自动解锁
// 无需调用unlock方法手动解锁
RLock fairLock = redisson.getFairLock("anyLock");
fairLock.lock(10, TimeUnit.SECONDS);
// 尝试加锁,最多等待100秒,上锁以后10秒自动解锁
boolean res = fairLock.tryLock(100, 10, TimeUnit.SECONDS);
...
fairLock.unlock();

или же

RLock fairLock = redisson.getFairLock("anyLock");
fairLock.lockAsync();
fairLock.lockAsync(10, TimeUnit.SECONDS);
Future<Boolean> res = fairLock.tryLockAsync(100, 10, TimeUnit.SECONDS);

рекомендация

отblog.csdn.net/sinat_34241861/article/details/112365417