Name
Semaphore
Synopsis
This class
implements semaphores, a classic thread
synchronization primitive that can be used to implement mutual
exclusion and wait/notify-style thread synchronization. A
Semaphore maintains some fixed number (specified
when the Semaphore( ) constructor is called) of
permits. The acquire( )
method blocks until a permit is available, then decrements the number
of available permits and returns. The release( )
method does the reverse: it increments the number of permits,
possibly unblocking a thread waiting in acquire(
).
If you pass true as the second argument to the
Semaphore( ) constructor, the semaphore treats
waiting threads fairly by placing them on a FIFO queue in the order
they called acquire( ) and granting permits to the
threads in this order. This prevents thread starvation.
Figure 16-92. java.util.concurrent.Semaphore
public class Semaphore implements Serializable { // Public Constructors public Semaphore(int permits); public Semaphore(int permits, boolean fair); // Public Instance Methods public void acquire( ) throws InterruptedException; public void acquire(int permits) throws InterruptedException; public void acquireUninterruptibly( ); public void acquireUninterruptibly(int permits); public int availablePermits( ); public int drainPermits( ); public final int getQueueLength( ); public final boolean hasQueuedThreads( ); public boolean isFair( ); public ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access