- All Implemented Interfaces:
- public class FirstInFirstOutSemaphore
- extends QueuedSemaphore
A First-in/First-out implementation of a Semaphore.
Waiting requests will be satisified in the order that
the processing of those requests got to a certain point.
If this sounds vague it is meant to be. FIFO implies a
logical timestamping at some point in the processing of
the request. To simplify things we don't actually
timestamp but simply store things in a FIFO queue. Thus
the order in which requests enter the queue will be the
order in which they come out. This order need not have
any relationship to the order in which requests were made,
nor the order in which requests actually return to the
caller. These depend on Java thread scheduling which is not
guaranteed to be predictable (although JVMs tend not to go
out of their way to be unfair).
|Nested classes inherited from class org.metasyntactic.thread.concurrent.QueuedSemaphore
|Fields inherited from class org.metasyntactic.thread.concurrent.Semaphore
Create a Semaphore with the given initial
number of permits.
|Methods inherited from class org.metasyntactic.thread.concurrent.Semaphore
|Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
public FirstInFirstOutSemaphore(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