Class ConcurrencyThrottleSupport
- All Implemented Interfaces:
Serializable
- Direct Known Subclasses:
ConcurrencyThrottleInterceptor
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.
- Since:
- 1.2.5
- Author:
- Juergen Hoeller
- See Also:
-
Field Summary
Modifier and TypeFieldDescriptionprotected org.apache.commons.logging.Log
Transient to optimize serialization.static final int
Switch concurrency 'off': that is, don't allow any concurrent invocations.static final int
Permit any number of concurrent invocations: that is, don't throttle concurrency. -
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionprotected void
To be invoked after the main execution logic of concrete subclasses.protected void
To be invoked before the main execution logic of concrete subclasses.int
Return the maximum number of concurrent access attempts allowed.boolean
Return whether this throttle is currently active.void
setConcurrencyLimit
(int concurrencyLimit) Set the maximum number of concurrent access attempts allowed.
-
Field Details
-
UNBOUNDED_CONCURRENCY
public static final int UNBOUNDED_CONCURRENCYPermit any number of concurrent invocations: that is, don't throttle concurrency.- See Also:
-
NO_CONCURRENCY
public static final int NO_CONCURRENCYSwitch concurrency 'off': that is, don't allow any concurrent invocations.- See Also:
-
logger
protected transient org.apache.commons.logging.Log loggerTransient to optimize serialization.
-
-
Constructor Details
-
ConcurrencyThrottleSupport
public ConcurrencyThrottleSupport()
-
-
Method Details
-
setConcurrencyLimit
public void setConcurrencyLimit(int concurrencyLimit) Set the maximum number of concurrent access attempts allowed. The default of -1 indicates no concurrency limit at all.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.
-
getConcurrencyLimit
public int getConcurrencyLimit()Return the maximum number of concurrent access attempts allowed. -
isThrottleActive
public boolean isThrottleActive()Return whether this throttle is currently active.- Returns:
true
if the concurrency limit for this instance is active- See Also:
-
beforeAccess
protected void beforeAccess()To be invoked before the main execution logic of concrete subclasses.This implementation applies the concurrency throttle.
- See Also:
-
afterAccess
protected void afterAccess()To be invoked after the main execution logic of concrete subclasses.- See Also:
-