|
Jive Forums API (5.5.20.2-oracle) Developer Javadocs | |||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectcom.jivesoftware.util.Semaphore
public class Semaphore
Base class for counting semaphores. Conceptually, a semaphore maintains a set of permits. Each acquire() blocks if necessary until a permit is available, and then takes it. Each release adds a permit. However, no actual permit objects are used; the Semaphore just keeps a count of the number available and acts accordingly.
A semaphore initialized to 1 can serve as a mutual exclusion lock.
Different implementation subclasses may provide different ordering guarantees (or lack thereof) surrounding which threads will be resumed upon a signal.
The default implementation makes NO guarantees about the order in which threads will acquire permits. It is often faster than other implementations.
Field Summary | |
---|---|
protected long |
permits
current number of available permits |
Constructor Summary | |
---|---|
Semaphore(long initialPermits)
Create a Semaphore with the given initial number of permits. |
Method Summary | |
---|---|
void |
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. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
protected long permits
Constructor Detail |
---|
public Semaphore(long initialPermits)
Method Detail |
---|
public void acquire() throws java.lang.InterruptedException
java.lang.InterruptedException
public boolean attempt(long msecs) throws java.lang.InterruptedException
java.lang.InterruptedException
public void release()
public void release(long n)
release(n)
is
equivalent in effect to:
for (int i = 0; i < n; ++i) release();
But may be more efficient in some semaphore implementations.
java.lang.IllegalArgumentException
- if n is negative.public long permits()
|
Jive Forums Project Page | |||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |