Package org.redisson.api
Interface RSemaphore
- All Superinterfaces:
RExpirable
,RExpirableAsync
,RObject
,RObjectAsync
,RSemaphoreAsync
- All Known Implementing Classes:
RedissonQueueSemaphore
,RedissonSemaphore
Redis based implementation of
Semaphore
.
Works in non-fair mode. Therefore order of acquiring is unpredictable.
- Author:
- Nikita Koksharov
-
Method Summary
Modifier and TypeMethodDescriptionvoid
acquire()
Acquires a permit.void
acquire
(int permits) Acquires defined amount ofpermits
.void
addPermits
(int permits) Increases or decreases the number of available permits by defined value.int
Returns amount of available permits.int
Acquires and returns all permits that are immediately available.void
release()
Releases a permit.void
release
(int permits) Releases defined amount ofpermits
.boolean
Tries to acquire currently available permit.boolean
tryAcquire
(int permits) Tries to acquire defined amount of currently availablepermits
.boolean
tryAcquire
(int permits, long waitTime, TimeUnit unit) Tries to acquire defined amount of currently availablepermits
.boolean
tryAcquire
(long waitTime, TimeUnit unit) Tries to acquire currently available permit.boolean
trySetPermits
(int permits) Tries to set number of permits.Methods inherited from interface org.redisson.api.RExpirable
clearExpire, expire, expire, expire, expireAt, expireAt, expireIfGreater, expireIfGreater, expireIfLess, expireIfLess, expireIfNotSet, expireIfNotSet, expireIfSet, expireIfSet, getExpireTime, remainTimeToLive
Methods inherited from interface org.redisson.api.RExpirableAsync
clearExpireAsync, expireAsync, expireAsync, expireAsync, expireAtAsync, expireAtAsync, expireIfGreaterAsync, expireIfGreaterAsync, expireIfLessAsync, expireIfLessAsync, expireIfNotSetAsync, expireIfNotSetAsync, expireIfSetAsync, expireIfSetAsync, getExpireTimeAsync, remainTimeToLiveAsync
Methods inherited from interface org.redisson.api.RObject
addListener, copy, delete, dump, getCodec, getIdleTime, getName, isExists, migrate, move, removeListener, rename, renamenx, restore, restore, restoreAndReplace, restoreAndReplace, sizeInMemory, touch, unlink
Methods inherited from interface org.redisson.api.RObjectAsync
addListenerAsync, copyAsync, deleteAsync, dumpAsync, getIdleTimeAsync, isExistsAsync, migrateAsync, moveAsync, removeListenerAsync, renameAsync, renamenxAsync, restoreAndReplaceAsync, restoreAndReplaceAsync, restoreAsync, restoreAsync, sizeInMemoryAsync, touchAsync, unlinkAsync
Methods inherited from interface org.redisson.api.RSemaphoreAsync
acquireAsync, acquireAsync, addPermitsAsync, availablePermitsAsync, drainPermitsAsync, releaseAsync, releaseAsync, tryAcquireAsync, tryAcquireAsync, tryAcquireAsync, tryAcquireAsync, trySetPermitsAsync
-
Method Details
-
acquire
Acquires a permit. Waits if necessary until a permit became available.- Throws:
InterruptedException
- if the current thread was interrupted
-
acquire
Acquires defined amount ofpermits
. Waits if necessary until all permits became available.- Parameters:
permits
- the number of permits to acquire- Throws:
InterruptedException
- if the current thread is interruptedIllegalArgumentException
- ifpermits
is negative
-
tryAcquire
boolean tryAcquire()Tries to acquire currently available permit.- Returns:
true
if a permit was acquired andfalse
otherwise
-
tryAcquire
boolean tryAcquire(int permits) Tries to acquire defined amount of currently availablepermits
.- Parameters:
permits
- the number of permits to acquire- Returns:
true
if permits were acquired andfalse
otherwise
-
tryAcquire
Tries to acquire currently available permit. Waits up to definedwaitTime
if necessary until a permit became available.- Parameters:
waitTime
- the maximum time to waitunit
- the time unit- Returns:
true
if a permit was acquired andfalse
otherwise- Throws:
InterruptedException
- if the current thread was interrupted
-
tryAcquire
Tries to acquire defined amount of currently availablepermits
. Waits up to definedwaitTime
if necessary until all permits became available.- Parameters:
permits
- amount of permitswaitTime
- the maximum time to waitunit
- the time unit- Returns:
true
if permits were acquired andfalse
otherwise- Throws:
InterruptedException
- if the current thread was interrupted
-
release
void release()Releases a permit. Increases the number of available permits. -
release
void release(int permits) Releases defined amount ofpermits
. Increases the number of available permits bypermits
amount.- Parameters:
permits
- amount of permits
-
availablePermits
int availablePermits()Returns amount of available permits.- Returns:
- number of permits
-
drainPermits
int drainPermits()Acquires and returns all permits that are immediately available.- 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, otherwisefalse
if permits were already set.
-
addPermits
void addPermits(int permits) Increases or decreases the number of available permits by defined value.- Parameters:
permits
- amount of permits to add/remove
-