类 AsyncExecutor<E>

java.lang.Object
net.apexes.commons.lang.AsyncExecutor<E>

public class AsyncExecutor<E> extends Object
异步并行处理器。将要处理的数据加入到阻塞队列中,启动工作线程从队列中获取数据并处理。
作者:
HeDYn
  • 构造器详细资料

    • AsyncExecutor

      public AsyncExecutor(AsyncExecutor.Worker<E> worker)
      创建一个异步并行处理器实例。
      参数:
      worker - 数据的处理者实例。
    • AsyncExecutor

      public AsyncExecutor(int parallelism, AsyncExecutor.Worker<E> worker)
      创建一个异步并行处理器实例。
      参数:
      parallelism - 并行处理的线程数。
      worker - 数据的处理者实例。
    • AsyncExecutor

      public AsyncExecutor(int queueCapacity, int parallelism, AsyncExecutor.Worker<E> worker)
      创建一个异步并行处理器实例。
      参数:
      queueCapacity - 待处理队列的最大容量
      parallelism - 并行处理的线程数。
      worker - 数据的处理者实例。
    • AsyncExecutor

      public AsyncExecutor(int queueCapacity, int parallelism, AsyncExecutor.Worker<E> worker, AsyncExecutor.ErrorMonitor monitor)
      创建一个异步并行处理器实例。
      参数:
      queueCapacity - 待处理队列的最大容量
      parallelism - 并行处理的线程数。
      worker - 数据的处理者实例。
      monitor - 异常监控器,用于监控处理线程的异常。
    • AsyncExecutor

      public AsyncExecutor(int queueCapacity, int parallelism, AsyncExecutor.Worker<E> worker, AsyncExecutor.ErrorMonitor monitor, ThreadFactory threadFactory)
      创建一个异步并行处理器实例。
      参数:
      queueCapacity - 待处理队列的最大容量
      parallelism - 并行处理的线程数。
      worker - 数据的处理者实例。
      monitor - 异常监控器,用于监控处理线程的异常。
      threadFactory - 处理线程的线程工厂。
  • 方法详细资料

    • builder

      public static AsyncExecutor.Builder builder()
    • start

      public void start()
      启动处理,调用此方法后要调用 close() 方法释放资源。
    • close

      public void close()
      停止处理并释放资源。
    • offer

      public boolean offer(E data)
      将指定元素加入到处理队列中(如果立即可行且不会违反容量限制),成功时返回 true,如果当前没有可用的空间,则返回 false。
      参数:
      data - 要处理的元素
      返回:
      如果该元素已添加到处理队列,则返回 true;否则返回 false
    • offer

      public boolean offer(E data, long timeout, TimeUnit unit) throws InterruptedException
      将指定元素插入处理队列中,在到达指定的等待时间前等待可用的空间(如果有必要)
      参数:
      data - 要处理的元素
      timeout - 放弃之前等待的时间长度,以 unit 为时间单位
      unit - 确定如何解释 timeout 参数的 TimeUnit
      返回:
      如果成功,则返回 true;如果在空间可用前超过了指定的等待时间,则返回 false
      抛出:
      InterruptedException - 如果在等待时被中断
    • getQueueSize

      public int getQueueSize()
      获取当前处理队列的元素个数
      返回:
    • isActivated

      public boolean isActivated()
      判断此处理器是否处于激活状态。
      返回:
      如果处于激活状态返回 true,否则返回 false