|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.springframework.util.ConcurrencyThrottleSupport
public abstract class ConcurrencyThrottleSupport
Support class for throttling concurrent access to a specific resource.
Designed for use as a base class, with the subclass invoking
the beforeAccess()
and afterAccess()
methods at
appropriate points of its workflow. Note that afterAccess
should usually be called in a finally block!
The default concurrency limit of this support class is -1 ("unbounded concurrency"). Subclasses may override this default; check the javadoc of the concrete class that you're using.
setConcurrencyLimit(int)
,
beforeAccess()
,
afterAccess()
,
ConcurrencyThrottleInterceptor
,
Serializable
,
Serialized FormField Summary | |
---|---|
private int |
concurrencyCount
|
private int |
concurrencyLimit
|
protected Log |
logger
Transient to optimize serialization |
private java.lang.Object |
monitor
|
static int |
NO_CONCURRENCY
Switch concurrency 'off': that is, don't allow any concurrent invocations. |
static int |
UNBOUNDED_CONCURRENCY
Permit any number of concurrent invocations: that is, don't throttle concurrency. |
Constructor Summary | |
---|---|
ConcurrencyThrottleSupport()
|
Method Summary | |
---|---|
protected void |
afterAccess()
To be invoked after the main execution logic of concrete subclasses. |
protected void |
beforeAccess()
To be invoked before the main execution logic of concrete subclasses. |
int |
getConcurrencyLimit()
Return the maximum number of concurrent access attempts allowed. |
boolean |
isThrottleActive()
Return whether this throttle is currently active. |
private void |
readObject(java.io.ObjectInputStream ois)
|
void |
setConcurrencyLimit(int concurrencyLimit)
Set the maximum number of concurrent access attempts allowed. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
public static final int UNBOUNDED_CONCURRENCY
public static final int NO_CONCURRENCY
protected transient Log logger
private transient java.lang.Object monitor
private int concurrencyLimit
private int concurrencyCount
Constructor Detail |
---|
public ConcurrencyThrottleSupport()
Method Detail |
---|
public void setConcurrencyLimit(int concurrencyLimit)
In principle, this limit can be changed at runtime, although it is generally designed as a config time setting.
NOTE: Do not switch between -1 and any concrete limit at runtime, as this will lead to inconsistent concurrency counts: A limit of -1 effectively turns off concurrency counting completely.
public int getConcurrencyLimit()
public boolean isThrottleActive()
true
if the concurrency limit for this instance is activegetConcurrencyLimit()
protected void beforeAccess()
This implementation applies the concurrency throttle.
afterAccess()
protected void afterAccess()
beforeAccess()
private void readObject(java.io.ObjectInputStream ois) throws java.io.IOException, java.lang.ClassNotFoundException
java.io.IOException
java.lang.ClassNotFoundException
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |