Interface RPermitExpirableSemaphoreAsync

All Superinterfaces:
RExpirableAsync, RObjectAsync
All Known Subinterfaces:
RPermitExpirableSemaphore
All Known Implementing Classes:
RedissonPermitExpirableSemaphore

public interface RPermitExpirableSemaphoreAsync extends RExpirableAsync
Asynchronous interface for Semaphore object with lease time parameter support for each acquired permit.

Each permit identified by own id and could be released only using its id. Permit id is a 128-bits unique random identifier generated each time during acquiring.

Works in non-fair mode. Therefore order of acquiring is unpredictable.

Author:
Nikita Koksharov
  • Method Details

    • acquireAsync

      RFuture<String> acquireAsync()
      Acquires a permit and returns its id. Waits if necessary until a permit became available.
      Returns:
      permit id
    • acquireAsync

      RFuture<List<String>> acquireAsync(int permits)
      Acquires defined amount of permits and returns their ids. Waits if necessary until all permits became available.
      Parameters:
      permits - the number of permits to acquire
      Returns:
      permits ids
      Throws:
      IllegalArgumentException - if permits is negative
    • acquireAsync

      RFuture<String> acquireAsync(long leaseTime, TimeUnit unit)
      Acquires a permit with defined leaseTime and return its id. Waits if necessary until a permit became available.
      Parameters:
      leaseTime - permit lease time
      unit - time unit
      Returns:
      permit id
    • acquireAsync

      RFuture<List<String>> acquireAsync(int permits, long leaseTime, TimeUnit unit)
      Acquires defined amount of permits and return their ids. Waits if necessary until all permits became available.
      Parameters:
      permits - the number of permits to acquire
      leaseTime - permit lease time
      unit - time unit
      Returns:
      permits ids
      Throws:
      IllegalArgumentException - if permits is negative
    • tryAcquireAsync

      RFuture<String> tryAcquireAsync()
      Tries to acquire currently available permit and return its id.
      Returns:
      permit id if a permit was acquired and null otherwise
    • tryAcquireAsync

      RFuture<List<String>> tryAcquireAsync(int permits)
      Tries to acquire defined amount of currently available permits and returns their ids.
      Parameters:
      permits - the number of permits to acquire
      Returns:
      permits ids if permits were acquired and empty list otherwise
      Throws:
      IllegalArgumentException - if permits is negative
    • tryAcquireAsync

      RFuture<String> tryAcquireAsync(long waitTime, TimeUnit unit)
      Tries to acquire currently available permit and return its id. Waits up to defined waitTime if necessary until a permit became available.
      Parameters:
      waitTime - the maximum time to wait
      unit - the time unit
      Returns:
      permit id if a permit was acquired and null if the waiting time elapsed before a permit was acquired
    • tryAcquireAsync

      RFuture<String> tryAcquireAsync(long waitTime, long leaseTime, TimeUnit unit)
      Tries to acquire currently available permit with defined leaseTime and return its id. Waits up to defined waitTime if necessary until a permit became available.
      Parameters:
      waitTime - the maximum time to wait
      leaseTime - permit lease time, use -1 to make it permanent
      unit - the time unit
      Returns:
      permit id if a permit was acquired and null if the waiting time elapsed before a permit was acquired
    • tryAcquireAsync

      RFuture<List<String>> tryAcquireAsync(int permits, long waitTime, long leaseTime, TimeUnit unit)
      Tries to acquire defined amount of currently available permits with defined leaseTime and returns their ids. Waits up to defined waitTime if necessary until permits became available.
      Parameters:
      permits - the number of permits to acquire
      waitTime - the maximum time to wait
      leaseTime - permit lease time, use -1 to make it permanent
      unit - the time unit
      Returns:
      permits ids if permits were acquired and empty list if the waiting time elapsed before permit were acquired
      Throws:
      IllegalArgumentException - if permits is negative
    • tryReleaseAsync

      RFuture<Boolean> tryReleaseAsync(String permitId)
      Tries to release permit by its id.
      Parameters:
      permitId - permit id
      Returns:
      true if a permit has been released and false otherwise
    • tryReleaseAsync

      RFuture<Integer> tryReleaseAsync(List<String> permitsIds)
      Tries to release defined permits by their ids.
      Parameters:
      permitsIds - - permits ids
      Returns:
      amount of released permits
      Throws:
      IllegalArgumentException - if permitsIds is null or empty
    • releaseAsync

      RFuture<Void> releaseAsync(String permitId)
      Releases a permit by its id. Increases the number of available permits. Throws an exception if permit id doesn't exist or has already been released.
      Parameters:
      permitId - - permit id
      Returns:
      void
    • releaseAsync

      RFuture<Void> releaseAsync(List<String> permitsIds)
      Releases permits by their ids. Increases the number of available permits. Throws an exception if permits ids don't exist or have already been released.
      Parameters:
      permitsIds - - permit id
      Throws:
      IllegalArgumentException - if permitsIds is null or empty
    • availablePermitsAsync

      RFuture<Integer> availablePermitsAsync()
      Returns number of available permits.
      Returns:
      number of permits
    • getPermitsAsync

      RFuture<Integer> getPermitsAsync()
      Returns the number of permits.
      Returns:
      number of permits
    • acquiredPermitsAsync

      RFuture<Integer> acquiredPermitsAsync()
      Returns the number of acquired permits.
      Returns:
      number of acquired permits
    • trySetPermitsAsync

      RFuture<Boolean> trySetPermitsAsync(int permits)
      Tries to set number of available permits.
      Parameters:
      permits - - number of permits
      Returns:
      true if permits has been set successfully, otherwise false.
    • setPermitsAsync

      RFuture<Void> setPermitsAsync(int permits)
      Sets the number of permits to the provided value. Calculates the delta between the given permits value and the current number of permits, then increases the number of available permits by delta.
      Parameters:
      permits - - number of permits
    • addPermitsAsync

      RFuture<Void> addPermitsAsync(int permits)
      Increases or decreases the number of available permits by defined value.
      Parameters:
      permits - amount of permits to add/remove
      Returns:
      void
    • updateLeaseTimeAsync

      RFuture<Boolean> updateLeaseTimeAsync(String permitId, long leaseTime, TimeUnit unit)
      Overrides and updates lease time for defined permit id.
      Parameters:
      permitId - permit id
      leaseTime - permit lease time, use -1 to make it permanent
      unit - the time unit
      Returns:
      true if permits has been updated successfully, otherwise false.