Package net.sourceforge.jtds.jdbc
Class Semaphore
java.lang.Object
net.sourceforge.jtds.jdbc.Semaphore
Simple semaphore class used to serialize access requests over the network
connection.
Based on the code originally written by Doug Lea. Once JDK 1.5 is the
standard this class can be replaced by the
java.util.concurrent.Sempahore
class.- Version:
- $Id: Semaphore.java,v 1.1 2004-12-20 15:51:17 alin_sinpalean Exp $
- Author:
- Mike Hutchinson
-
Field Summary
Fields -
Constructor Summary
ConstructorsConstructorDescriptionSemaphore
(long initialPermits) Create a Semaphore with the given initial number of permits. -
Method Summary
Modifier and TypeMethodDescriptionvoid
acquire()
Wait until a permit is available, and take one.boolean
attempt
(long msecs) Wait at most msecs millisconds for a permit.long
permits()
Return the current number of available permits.void
release()
Release a permit.void
release
(long n) Release N permits.
-
Field Details
-
permits
protected long permitsCurrent number of available permits.
-
-
Constructor Details
-
Semaphore
public Semaphore(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.
-
-
Method Details
-
acquire
Wait until a permit is available, and take one.- Throws:
InterruptedException
-
attempt
Wait at most msecs millisconds for a permit.- Throws:
InterruptedException
-
release
public void release()Release a permit. -
release
public void release(long n) Release N permits.release(n)
is equivalent in effect to:for (int i = 0; i invalid input: '<' n; ++i) release();
But may be more efficient in some semaphore implementations.- Throws:
IllegalArgumentException
- if n is negative
-
permits
public long permits()Return the current number of available permits. Returns an accurate, but possibly unstable value, that may change immediately after returning.
-