public abstract class Lock extends Object
Typical use might look like:
new Lock.With(directory.makeLock("my.lock")) {
public Object doBody() {
... code to execute while locked ...
}
}.run();
Directory.makeLock(String)| Modifier and Type | Class | Description |
|---|---|---|
static class |
Lock.With |
Utility class for executing code with exclusive access.
|
| Modifier and Type | Field | Description |
|---|---|---|
protected Throwable |
failureReason |
If a lock obtain called, this failureReason may be set
with the "root cause" Exception as to why the lock was
not obtained.
|
static long |
LOCK_OBTAIN_WAIT_FOREVER |
Pass this value to
obtain(long) to try
forever to obtain the lock. |
static long |
LOCK_POLL_INTERVAL |
How long
obtain(long) waits, in milliseconds,
in between attempts to acquire the lock. |
| Constructor | Description |
|---|---|
Lock() |
| Modifier and Type | Method | Description |
|---|---|---|
abstract boolean |
isLocked() |
Returns true if the resource is currently locked.
|
abstract boolean |
obtain() |
Attempts to obtain exclusive access and immediately return
upon success or failure.
|
boolean |
obtain(long lockWaitTimeout) |
Attempts to obtain an exclusive lock within amount of
time given.
|
abstract void |
release() |
Releases exclusive access.
|
public static long LOCK_POLL_INTERVAL
obtain(long) waits, in milliseconds,
in between attempts to acquire the lock.public static final long LOCK_OBTAIN_WAIT_FOREVER
obtain(long) to try
forever to obtain the lock.protected Throwable failureReason
public abstract boolean obtain()
throws IOException
IOExceptionpublic boolean obtain(long lockWaitTimeout)
throws LockObtainFailedException,
IOException
LOCK_POLL_INTERVAL
(currently 1000) milliseconds until lockWaitTimeout is
passed.lockWaitTimeout - length of time to wait in
milliseconds or LOCK_OBTAIN_WAIT_FOREVER to retry foreverLockObtainFailedException - if lock wait times outIllegalArgumentException - if lockWaitTimeout is
out of boundsIOException - if obtain() throws IOExceptionpublic abstract void release()
throws IOException
IOExceptionpublic abstract boolean isLocked()
throws IOException
obtain() before using the resource.IOExceptionCopyright © 2000-2018 Apache Software Foundation. All Rights Reserved.