Package EDU.oswego.cs.dl.util.concurrent
Class PrioritySemaphore
java.lang.Object
EDU.oswego.cs.dl.util.concurrent.Semaphore
EDU.oswego.cs.dl.util.concurrent.QueuedSemaphore
EDU.oswego.cs.dl.util.concurrent.PrioritySemaphore
- All Implemented Interfaces:
Sync
A Semaphore that grants requests to threads with higher
Thread priority rather than lower priority when there is
contention. Ordering of requests with the same priority
is approximately FIFO.
Priorities are based on Thread.getPriority.
Changing the priority of an already-waiting thread does NOT
change its ordering. This class also does not specially deal with priority
inversion -- when a new high-priority thread enters
while a low-priority thread is currently running, their
priorities are not artificially manipulated.
-
Nested Class Summary
Nested ClassesNested classes/interfaces inherited from class EDU.oswego.cs.dl.util.concurrent.QueuedSemaphore
QueuedSemaphore.WaitQueue
-
Field Summary
Fields inherited from class EDU.oswego.cs.dl.util.concurrent.QueuedSemaphore
wq_
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
-
Constructor Summary
ConstructorsConstructorDescriptionPrioritySemaphore
(long initialPermits) Create a Semaphore with the given initial number of permits. -
Method Summary
Methods inherited from class EDU.oswego.cs.dl.util.concurrent.QueuedSemaphore
acquire, attempt, getSignallee, precheck, recheck, release, release
-
Constructor Details
-
PrioritySemaphore
public PrioritySemaphore(long initialPermits) Create a Semaphore with the given initial number of permits. Using a seed of one makes the semaphore act as a mutual exclusion lock. Negative seeds are also allowed, in which case no acquires will proceed until the number of releases has pushed the number of permits past 0.
-