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.