Interface RPermitExpirableSemaphore

    • Method Detail

      • acquire

        String acquire()
                throws InterruptedException
        Acquires a permit and returns its id. Waits if necessary until a permit became available.
        Returns:
        permit id
        Throws:
        InterruptedException - if the current thread is interrupted
      • acquire

        String acquire(long leaseTime,
                       TimeUnit unit)
                throws InterruptedException
        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
        Throws:
        InterruptedException - if the current thread is interrupted
      • tryAcquire

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

        String tryAcquire(long waitTime,
                          TimeUnit unit)
                   throws InterruptedException
        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
        Throws:
        InterruptedException - if the current thread is interrupted
      • tryAcquire

        String tryAcquire(long waitTime,
                          long leaseTime,
                          TimeUnit unit)
                   throws InterruptedException
        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
        Throws:
        InterruptedException - if the current thread is interrupted
      • tryRelease

        boolean tryRelease(String permitId)
        Tries to release permit by its id.
        Parameters:
        permitId - permit id
        Returns:
        true if a permit has been released and false otherwise
      • release

        void release(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
      • availablePermits

        int availablePermits()
        Returns amount of available permits.
        Returns:
        number of permits
      • trySetPermits

        boolean trySetPermits(int permits)
        Tries to set number of permits.
        Parameters:
        permits - - number of permits
        Returns:
        true if permits has been set successfully, otherwise false.
      • addPermits

        void addPermits(int permits)
        Increases or decreases the number of available permits by defined value.
        Parameters:
        permits - amount of permits to add/remove
      • updateLeaseTime

        boolean updateLeaseTime(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.