Community
Participate
Working Groups
try {
manager.reportBlocked(monitor, blockingJob);
while (true) {
if (isCanceled(monitor))
// just return if lock listener decided to grant immediate access
throw new OperationCanceledException();
if (manager.getLockManager().aboutToWait(blocker)) {
//only return if the runner wasn't already done
if (runner.shutdown())
return this;
}
if (isCanceled(monitor)) {
// only return if the runner wasn't already done
synchronized (runner.getNotifier()) {
if (runner.isFinished())
break;
manager.beginMonitoring(this, monitor);
final Thread currentThread = Thread.currentThread();
// Check all conditions under the manager.lock. Anything that can
// cause a change in any condition must also notify() the lock.
// Invoke aboutToWait() once per newly discovered blocker.
// aboutToWait() must be called without holding any locks.