See use case description at addOwner(Thread).
| Modifier and Type | Method and Description |
|---|---|
| public void | |
| public boolean | |
| public boolean | |
| public void | removeOwner(Thread
the thread to be removed from the list of additional owning threads t)Remove a thread from the list of additional lock owner threads. |
| public void | unlock()
Redeclares com. Wait's until all additional owners released this lock before releasing it. |
| public void | unlock(Runnable taskAfterUnlockBeforeNotify)
Redeclares com. Wait's until all additional owners released this lock before releasing it. |
| addOwner | back to summary |
|---|---|
| public void addOwner(Thread t) throws RuntimeException, IllegalArgumentException Add a thread to the list of additional lock owners, which enables them to recursively claim this lock.
The caller must hold this lock and be the original lock owner, see
If the original owner releases this lock via
Thread2 thread2 = new Thread2();
Thread1 {
// Claim this lock and become the original lock owner.
lock.lock();
try {
// Allow Thread2 to claim the lock, ie. make thread2 an additional lock owner
addOwner(thread2);
// Start thread2
thread2.start();
// Wait until thread2 has finished requiring this lock, but keep thread2 running
while(!thread2.waitForResult()) sleep();
// Optional: Only if sure that this thread doesn't hold the lock anymore,
// otherwise just release the lock via unlock().
removeOwner(thread2);
} finally {
// Release this lock and remove all additional lock owners.
// Implicit wait until thread2 gets off the lock.
lock.unlock();
}
}.start();
| |
| isOriginalOwner | back to summary |
|---|---|
| public boolean isOriginalOwner() Returns true if the current thread is the original lock owner, ie.
successfully claimed this lock the first time, ie. | |
| isOriginalOwner | back to summary |
|---|---|
| public boolean isOriginalOwner(Thread thread) Returns true if the passed thread is the original lock owner, ie.
successfully claimed this lock the first time, ie. | |
| removeOwner | back to summary |
|---|---|
| public void removeOwner(Thread t) throws RuntimeException, IllegalArgumentException Remove a thread from the list of additional lock owner threads.
The caller must hold this lock and be the original lock owner, see Only use this method if sure that the thread doesn't hold the lock anymore.
| |
| unlock | back to summary |
|---|---|
| public void unlock() throws RuntimeException Redeclares com. Doc from com. Wait's until all additional owners released this lock before releasing it. Release the lock.
| |
| unlock | back to summary |
|---|---|
| public void unlock(Runnable taskAfterUnlockBeforeNotify) Redeclares com. Doc from com. Wait's until all additional owners released this lock before releasing it. Execute theRunnable taskAfterUnlockBeforeNotify while holding the exclusive lock.
Then release the lock.
| |