EDU.oswego.cs.dl.util.concurrent

Class QueuedSemaphore

Implemented Interfaces:
Sync
Known Direct Subclasses:
FIFOSemaphore, PrioritySemaphore

public abstract class QueuedSemaphore
extends Semaphore

Abstract base class for semaphores relying on queued wait nodes.

[ Introduction to this package. ]

Nested Class Summary

protected static class
QueuedSemaphore.WaitQueue
Base class for internal queue classes for semaphores, etc.

Field Summary

protected QueuedSemaphore.WaitQueue
wq_

Fields inherited from class EDU.oswego.cs.dl.util.concurrent.Semaphore

permits_

Fields inherited from interface EDU.oswego.cs.dl.util.concurrent.Sync

ONE_CENTURY, ONE_DAY, ONE_HOUR, ONE_MINUTE, ONE_SECOND, ONE_WEEK, ONE_YEAR

Method Summary

void
acquire()
Wait until a permit is available, and take one *
boolean
attempt(long msecs)
Wait at most msecs millisconds for a permit.
protected QueuedSemaphore.WaitQueue.WaitNode
getSignallee()
protected boolean
precheck()
protected boolean
recheck(QueuedSemaphore.WaitQueue.WaitNode w)
void
release()
Release a permit *
void
release(long n)
Release N permits *

Methods inherited from class EDU.oswego.cs.dl.util.concurrent.Semaphore

acquire, attempt, permits, release, release

Field Details

wq_

protected final QueuedSemaphore.WaitQueue wq_

Method Details

acquire

public void acquire()
            throws InterruptedException
Wait until a permit is available, and take one *
Specified by:
acquire in interface Sync
Overrides:
acquire in interface Semaphore

attempt

public boolean attempt(long msecs)
            throws InterruptedException
Wait at most msecs millisconds for a permit. *
Specified by:
attempt in interface Sync
Overrides:
attempt in interface Semaphore

getSignallee

protected QueuedSemaphore.WaitQueue.WaitNode getSignallee()

precheck

protected boolean precheck()

recheck

protected boolean recheck(QueuedSemaphore.WaitQueue.WaitNode w)

release

public void release()
Release a permit *
Specified by:
release in interface Sync
Overrides:
release in interface Semaphore

release

public void release(long n)
Release N permits *
Overrides:
release in interface Semaphore