public class RedissonLock extends RedissonObject implements RLock
Lock
Implements reentrant lock.Implements a non-fair locking so doesn't guarantees an acquire order.
Modifier and Type | Field and Description |
---|---|
protected long |
internalLockLeaseTime |
protected static LockPubSub |
PUBSUB |
codec
Constructor and Description |
---|
RedissonLock(CommandAsyncExecutor commandExecutor,
String name,
UUID id) |
Modifier and Type | Method and Description |
---|---|
protected RFuture<Void> |
acquireFailedAsync(long threadId) |
boolean |
clearExpire()
Clear an expire timeout or expire date for object.
|
RFuture<Boolean> |
clearExpireAsync()
Clear an expire timeout or expire date for object in async mode.
|
RFuture<Boolean> |
deleteAsync()
Delete object in async mode
|
boolean |
expire(long timeToLive,
TimeUnit timeUnit)
Set a timeout for object.
|
RFuture<Boolean> |
expireAsync(long timeToLive,
TimeUnit timeUnit)
Set a timeout for object in async mode.
|
boolean |
expireAt(Date timestamp)
Set an expire date for object.
|
boolean |
expireAt(long timestamp)
Set an expire date for object.
|
RFuture<Boolean> |
expireAtAsync(Date timestamp)
Set an expire date for object in async mode.
|
RFuture<Boolean> |
expireAtAsync(long timestamp)
Set an expire date for object in async mode.
|
void |
forceUnlock()
Unlocks lock independently of state
|
RFuture<Boolean> |
forceUnlockAsync() |
protected RedissonLockEntry |
getEntry(long threadId) |
protected String |
getEntryName() |
int |
getHoldCount()
Number of holds on this lock by the current thread
|
RFuture<Boolean> |
isExistsAsync()
Check object existence in async mode.
|
boolean |
isHeldByCurrentThread()
Checks if this lock is held by the current thread
|
boolean |
isLocked()
Checks if this lock locked by any thread
|
void |
lock() |
void |
lock(long leaseTime,
TimeUnit unit)
Acquires the lock.
|
RFuture<Void> |
lockAsync() |
RFuture<Void> |
lockAsync(long currentThreadId) |
RFuture<Void> |
lockAsync(long leaseTime,
TimeUnit unit) |
RFuture<Void> |
lockAsync(long leaseTime,
TimeUnit unit,
long currentThreadId) |
void |
lockInterruptibly() |
void |
lockInterruptibly(long leaseTime,
TimeUnit unit)
Acquires the lock.
|
Condition |
newCondition() |
long |
remainTimeToLive()
Remaining time to live of Redisson object that has a timeout
|
RFuture<Long> |
remainTimeToLiveAsync()
Get remaining time to live of object in seconds.
|
protected RFuture<RedissonLockEntry> |
subscribe(long threadId) |
boolean |
tryLock() |
boolean |
tryLock(long waitTime,
long leaseTime,
TimeUnit unit)
Returns
true as soon as the lock is acquired. |
boolean |
tryLock(long waitTime,
TimeUnit unit) |
RFuture<Boolean> |
tryLockAsync() |
RFuture<Boolean> |
tryLockAsync(long threadId) |
RFuture<Boolean> |
tryLockAsync(long waitTime,
long leaseTime,
TimeUnit unit) |
RFuture<Boolean> |
tryLockAsync(long waitTime,
long leaseTime,
TimeUnit unit,
long currentThreadId) |
RFuture<Boolean> |
tryLockAsync(long waitTime,
TimeUnit unit) |
void |
unlock() |
RFuture<Void> |
unlockAsync() |
RFuture<Void> |
unlockAsync(long threadId) |
protected RFuture<Boolean> |
unlockInnerAsync(long threadId) |
protected void |
unsubscribe(RFuture<RedissonLockEntry> future,
long threadId) |
await, delete, encode, encodeMapKey, encodeMapValue, get, getCodec, getName, getName, isExists, migrate, migrateAsync, move, moveAsync, newPromise, newSucceededFuture, prefixName, rename, renameAsync, renamenx, renamenxAsync, suffixName, touch, touchAsync, unlink, unlinkAsync
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
clearExpire, expire, expireAt, expireAt, remainTimeToLive
delete, getCodec, getName, isExists, migrate, move, rename, renamenx, touch, unlink
clearExpireAsync, expireAsync, expireAtAsync, expireAtAsync, remainTimeToLiveAsync
migrateAsync, moveAsync, renameAsync, renamenxAsync, touchAsync, unlinkAsync
protected long internalLockLeaseTime
protected static final LockPubSub PUBSUB
public RedissonLock(CommandAsyncExecutor commandExecutor, String name, UUID id)
protected String getEntryName()
public void lock(long leaseTime, TimeUnit unit)
RLock
If the lock is not available then the current thread becomes
disabled for thread scheduling purposes and lies dormant until the
lock has been acquired.
If the lock is acquired, it is held until unlock
is invoked,
or until leaseTime milliseconds have passed
since the lock was granted - whichever comes first.
lock
in interface RLock
leaseTime
- the maximum time to hold the lock after granting it,
before automatically releasing it if it hasn't already been released by invoking unlock
.
If leaseTime is -1, hold the lock until explicitly unlocked.unit
- the time unit of the leaseTime
argumentpublic void lockInterruptibly() throws InterruptedException
lockInterruptibly
in interface Lock
InterruptedException
public void lockInterruptibly(long leaseTime, TimeUnit unit) throws InterruptedException
RLock
If the lock is not available then the current thread becomes
disabled for thread scheduling purposes and lies dormant until the
lock has been acquired.
If the lock is acquired, it is held until unlock
is invoked,
or until leaseTime have passed
since the lock was granted - whichever comes first.
lockInterruptibly
in interface RLock
leaseTime
- the maximum time to hold the lock after granting it,
before automatically releasing it if it hasn't already been released by invoking unlock
.
If leaseTime is -1, hold the lock until explicitly unlocked.unit
- the time unit of the leaseTime
argumentInterruptedException
- - if the thread is interrupted before or during this method.public boolean tryLock(long waitTime, long leaseTime, TimeUnit unit) throws InterruptedException
RLock
true
as soon as the lock is acquired.
If the lock is currently held by another thread in this or any
other process in the distributed system this method keeps trying
to acquire the lock for up to waitTime
before
giving up and returning false
. If the lock is acquired,
it is held until unlock
is invoked, or until leaseTime
have passed since the lock was granted - whichever comes first.tryLock
in interface RLock
waitTime
- the maximum time to aquire the lockleaseTime
- lease timeunit
- time unittrue
if lock has been successfully acquiredInterruptedException
- - if the thread is interrupted before or during this method.protected RedissonLockEntry getEntry(long threadId)
protected RFuture<RedissonLockEntry> subscribe(long threadId)
protected void unsubscribe(RFuture<RedissonLockEntry> future, long threadId)
public boolean tryLock(long waitTime, TimeUnit unit) throws InterruptedException
tryLock
in interface Lock
InterruptedException
public Condition newCondition()
newCondition
in interface Lock
public void forceUnlock()
RLock
forceUnlock
in interface RLock
public RFuture<Boolean> forceUnlockAsync()
forceUnlockAsync
in interface RLockAsync
public boolean isLocked()
RLock
public RFuture<Boolean> isExistsAsync()
RObjectAsync
isExistsAsync
in interface RObjectAsync
isExistsAsync
in class RedissonObject
true
if object exists and false
otherwisepublic boolean isHeldByCurrentThread()
RLock
isHeldByCurrentThread
in interface RLock
true
if held by current thread
otherwise false
public int getHoldCount()
RLock
getHoldCount
in interface RLock
0
if this lock is not held by current threadpublic RFuture<Boolean> deleteAsync()
RObjectAsync
deleteAsync
in interface RObjectAsync
deleteAsync
in class RedissonObject
true
if object was deleted false
if notpublic RFuture<Void> unlockAsync()
unlockAsync
in interface RLockAsync
public RFuture<Void> unlockAsync(long threadId)
unlockAsync
in interface RLockAsync
public RFuture<Void> lockAsync()
lockAsync
in interface RLockAsync
public RFuture<Void> lockAsync(long leaseTime, TimeUnit unit)
lockAsync
in interface RLockAsync
public RFuture<Void> lockAsync(long currentThreadId)
lockAsync
in interface RLockAsync
public RFuture<Void> lockAsync(long leaseTime, TimeUnit unit, long currentThreadId)
lockAsync
in interface RLockAsync
public RFuture<Boolean> tryLockAsync()
tryLockAsync
in interface RLockAsync
public RFuture<Boolean> tryLockAsync(long threadId)
tryLockAsync
in interface RLockAsync
public RFuture<Boolean> tryLockAsync(long waitTime, TimeUnit unit)
tryLockAsync
in interface RLockAsync
public RFuture<Boolean> tryLockAsync(long waitTime, long leaseTime, TimeUnit unit)
tryLockAsync
in interface RLockAsync
public RFuture<Boolean> tryLockAsync(long waitTime, long leaseTime, TimeUnit unit, long currentThreadId)
tryLockAsync
in interface RLockAsync
public boolean expire(long timeToLive, TimeUnit timeUnit)
RExpirable
expire
in interface RExpirable
timeToLive
- - timeout before object will be deletedtimeUnit
- - timeout time unittrue
if the timeout was set and false
if notpublic RFuture<Boolean> expireAsync(long timeToLive, TimeUnit timeUnit)
RExpirableAsync
expireAsync
in interface RExpirableAsync
timeToLive
- - timeout before object will be deletedtimeUnit
- - timeout time unittrue
if the timeout was set and false
if notpublic boolean expireAt(long timestamp)
RExpirable
expireAt
in interface RExpirable
timestamp
- - expire date in milliseconds (Unix timestamp)true
if the timeout was set and false
if notpublic RFuture<Boolean> expireAtAsync(long timestamp)
RExpirableAsync
expireAtAsync
in interface RExpirableAsync
timestamp
- - expire date in seconds (Unix timestamp)true
if the timeout was set and false
if notpublic boolean expireAt(Date timestamp)
RExpirable
expireAt
in interface RExpirable
timestamp
- - expire datetrue
if the timeout was set and false
if notpublic RFuture<Boolean> expireAtAsync(Date timestamp)
RExpirableAsync
expireAtAsync
in interface RExpirableAsync
timestamp
- - expire datetrue
if the timeout was set and false
if notpublic boolean clearExpire()
RExpirable
clearExpire
in interface RExpirable
true
if timeout was removed
false
if object does not exist or does not have an associated timeoutpublic RFuture<Boolean> clearExpireAsync()
RExpirableAsync
clearExpireAsync
in interface RExpirableAsync
true
if the timeout was cleared and false
if notpublic long remainTimeToLive()
RExpirable
remainTimeToLive
in interface RExpirable
public RFuture<Long> remainTimeToLiveAsync()
RExpirableAsync
remainTimeToLiveAsync
in interface RExpirableAsync
-1
if object does not exist or time in secondsCopyright © 2014–2017 The Redisson Project. All rights reserved.