类 ConcurrencyThrottleSupport

java.lang.Object
cn.taketoday.util.ConcurrencyThrottleSupport
所有已实现的接口:
Serializable
直接已知子类:
SimpleAsyncTaskExecutor.ConcurrencyThrottleAdapter

public abstract class ConcurrencyThrottleSupport extends Object implements Serializable
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.

从以下版本开始:
4.0
作者:
Juergen Hoeller, TODAY 2021/9/11 15:45
另请参阅:
  • 字段详细资料

    • UNBOUNDED_CONCURRENCY

      public static final int UNBOUNDED_CONCURRENCY
      Permit any number of concurrent invocations: that is, don't throttle concurrency.
      另请参阅:
    • NO_CONCURRENCY

      public static final int NO_CONCURRENCY
      Switch concurrency 'off': that is, don't allow any concurrent invocations.
      另请参阅:
    • logger

      protected transient Logger logger
      Transient to optimize serialization.
    • monitor

      private transient Object monitor
    • concurrencyLimit

      private int concurrencyLimit
    • concurrencyCount

      private int concurrencyCount
  • 构造器详细资料

    • ConcurrencyThrottleSupport

      public ConcurrencyThrottleSupport()
  • 方法详细资料

    • setConcurrencyLimit

      public void setConcurrencyLimit(int concurrencyLimit)
      Set the maximum number of concurrent access attempts allowed. -1 indicates unbounded concurrency.

      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.
      返回:
      true if the concurrency limit for this instance is active
      另请参阅:
    • beforeAccess

      protected void beforeAccess()
      To be invoked before the main execution logic of concrete subclasses.

      This implementation applies the concurrency throttle.

      另请参阅:
    • afterAccess

      protected void afterAccess()
      To be invoked after the main execution logic of concrete subclasses.
      另请参阅:
    • readObject

      private void readObject(ObjectInputStream ois) throws IOException, ClassNotFoundException
      抛出:
      IOException
      ClassNotFoundException