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 ...
Get Java in a Nutshell, 5th Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.