Class ReactiveLock


  • @Internal
    public class ReactiveLock
    extends java.lang.Object
    A mutex pessimistic lock, compatible with reactive.
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      static class  ReactiveLock.Waiter  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      boolean debugAsSingleThreaded()  
      boolean isLocked()  
      reactor.core.publisher.Mono<ReactiveLock.Waiter> lock​(java.lang.String dbg, java.time.Duration timeout)
      if the lock is unlocked, lock it, and continue else if the lock is locked, join the list of things waiting for it to be unlocked
      reactor.core.publisher.Mono<java.lang.Void> unlock​(ReactiveLock.Waiter waiter)
      The thing currently waiting on this lock is now unlocking it.
      reactor.core.publisher.Mono<java.lang.Void> unlock​(ReactiveLock.Waiter waiter, java.lang.String extraDbg)  
      reactor.core.publisher.Mono<java.lang.Void> unlock​(ReactiveLock.Waiter waiter, java.lang.String extraDbg, boolean removeFromWaiters)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Method Detail

      • lock

        public reactor.core.publisher.Mono<ReactiveLock.Waiter> lock​(java.lang.String dbg,
                                                                     java.time.Duration timeout)
        if the lock is unlocked, lock it, and continue else if the lock is locked, join the list of things waiting for it to be unlocked
      • unlock

        public reactor.core.publisher.Mono<java.lang.Void> unlock​(ReactiveLock.Waiter waiter)
        The thing currently waiting on this lock is now unlocking it. Let one (and only one) thing waiting on this lock, continue.

        It's reactive style as always need to do a .timeout() after it

      • unlock

        public reactor.core.publisher.Mono<java.lang.Void> unlock​(ReactiveLock.Waiter waiter,
                                                                  @Nullable
                                                                  java.lang.String extraDbg)
      • unlock

        public reactor.core.publisher.Mono<java.lang.Void> unlock​(ReactiveLock.Waiter waiter,
                                                                  @Nullable
                                                                  java.lang.String extraDbg,
                                                                  boolean removeFromWaiters)
      • debugAsSingleThreaded

        public boolean debugAsSingleThreaded()
      • isLocked

        public boolean isLocked()