|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Objectnet.refractions.udig.ui.UDIGDisplaySafeLock
public class UDIGDisplaySafeLock
This lock is reentrant and guarantees that a display thread will not block,
it will continue to call Display#readAndDispatch(). The Display thread
gets priority over non-display threads.
API is copied from the ReentrantLock
| Constructor Summary | |
|---|---|
UDIGDisplaySafeLock()
|
|
| Method Summary | |
|---|---|
int |
getHoldCount()
Queries the number of holds on this lock by the current thread. |
int |
getWaitQueueLength(java.util.concurrent.locks.Condition condition)
Returns an estimate of the number of threads waiting on the given condition associated with this lock. |
boolean |
hasWaiters(java.util.concurrent.locks.Condition condition)
Queries whether any threads are waiting on the given condition associated with this lock. |
protected void |
init()
|
boolean |
isHeldByCurrentThread()
Queries if this lock is held by the current thread. |
boolean |
isLocked()
Returns true if locked by a different thread. |
void |
lock()
|
void |
lockInterruptibly()
|
java.util.concurrent.locks.Condition |
newCondition()
|
boolean |
tryLock()
|
boolean |
tryLock(long timeout,
java.util.concurrent.TimeUnit unit)
|
void |
unlock()
|
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
|---|
public UDIGDisplaySafeLock()
| Method Detail |
|---|
protected void init()
public int getHoldCount()
A thread has a hold on a lock for each lock action that is not matched by an unlock action.
The hold count information is typically only used for testing and debugging purposes. For example, if a certain section of code should not be entered with the lock already held then we can assert that fact:
class X {
ReentrantLock lock = new ReentrantLock();
// ...
public void m() {
assert lock.getHoldCount() == 0;
lock.lock();
try {
// ... method body
} finally {
lock.unlock();
}
}
}
public int getWaitQueueLength(java.util.concurrent.locks.Condition condition)
condition - the condition
java.lang.IllegalMonitorStateException - if this lock
is not held
java.lang.IllegalArgumentException - if the given condition is
not associated with this lock
java.lang.NullPointerException - if condition nullpublic boolean hasWaiters(java.util.concurrent.locks.Condition condition)
condition - the condition
java.lang.IllegalMonitorStateException - if this lock
is not held
java.lang.IllegalArgumentException - if the given condition is
not associated with this lock
java.lang.NullPointerException - if condition nullpublic boolean isHeldByCurrentThread()
Analogous to the Thread.holdsLock(java.lang.Object) method for built-in
monitor locks, this method is typically used for debugging and
testing. For example, a method that should only be called while
a lock is held can assert that this is the case:
class X {
ReentrantLock lock = new ReentrantLock();
// ...
public void m() {
assert lock.isHeldByCurrentThread();
// ... method body
}
}
It can also be used to ensure that a reentrant lock is used in a non-reentrant manner, for example:
class X {
ReentrantLock lock = new ReentrantLock();
// ...
public void m() {
assert !lock.isHeldByCurrentThread();
lock.lock();
try {
// ... method body
} finally {
lock.unlock();
}
}
}
public boolean isLocked()
public void lock()
lock in interface java.util.concurrent.locks.Lock
public void lockInterruptibly()
throws java.lang.InterruptedException
lockInterruptibly in interface java.util.concurrent.locks.Lockjava.lang.InterruptedExceptionpublic java.util.concurrent.locks.Condition newCondition()
newCondition in interface java.util.concurrent.locks.Lockpublic boolean tryLock()
tryLock in interface java.util.concurrent.locks.Lock
public boolean tryLock(long timeout,
java.util.concurrent.TimeUnit unit)
throws java.lang.InterruptedException
tryLock in interface java.util.concurrent.locks.Lockjava.lang.InterruptedExceptionpublic void unlock()
unlock in interface java.util.concurrent.locks.Lock
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||