Class Concurrents

java.lang.Object
cn.xuanyuanli.core.util.Concurrents

public class Concurrents extends Object
并发工具类
Author:
John Li
  • Field Details

    • logger

      protected static final org.slf4j.Logger logger
      日志记录器
    • FUTURE_CACHE

      private static final ConcurrentMap<String,Object> FUTURE_CACHE
      未来缓存
  • Constructor Details

    • Concurrents

      public Concurrents()
  • Method Details

    • execOfTimeout

      public static <T> T execOfTimeout(Supplier<T> execBody, long timeout, Consumer<Exception> timeoutExceptionCall)
      带超时设置的执行
      Type Parameters:
      T - 泛型
      Parameters:
      execBody - 执行主体
      timeout - 超时时间,单位为毫秒
      timeoutExceptionCall - 超时异常的回调
      Returns:
      Concurrents
    • createThreadPoolExecutor

      public static ThreadPoolExecutor createThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, int workQueueNum, String threadPrefixName)
      创建一个通用的线程池
      Parameters:
      corePoolSize - 核心池大小
      maximumPoolSize - 最大池大小
      keepAliveTime - 维持时间
      unit - 货币
      workQueueNum - 全国矿工工会工作队列
      threadPrefixName - 线程前缀名字
      Returns:
      ThreadPoolExecutor
    • await

      public static void await(Supplier<Boolean> supplier, int intervalTime)
      等待某个任务执行完毕
      Parameters:
      supplier - 任务是否完成,完成为true
      intervalTime - 任务结果获取的间隔时间
    • await

      public static void await(Supplier<Boolean> supplier, int intervalTime, int maxRetryTime)
      等待某个任务执行完毕
      Parameters:
      supplier - 任务是否完成,完成为true
      intervalTime - 任务结果获取的间隔时间
      maxRetryTime - 最大重试时间
    • executeTask

      public static <T> T executeTask(String key, Supplier<?> supplier)
      多线程下执行相同任务,用此方法防止同一任务重复执行
      Type Parameters:
      T - 泛型
      Parameters:
      key - 键
      supplier - 供应商
      Returns:
      Concurrents