public static ExecutorService newThreadPool(
      int corePoolSize,
      int maximumPoolSize,
      long keepAliveTime,
      TimeUnit unit,
      BlockingQueue<Runnable> workQueue,
      IoTThreadFactory ioTThreadFactory,
      String poolName) {
    logger.info(NEW_THREAD_POOL_LOGGER_FORMAT, poolName);
    return new WrappedThreadPoolExecutor(
        corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue, ioTThreadFactory, poolName);
  }
see {@link Executors#newScheduledThreadPool(int, java.util.concurrent.ThreadFactory)}.

@param corePoolSize the number of threads to keep in the pool.
@param poolName the name of thread pool.
@return thread pool.
iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/concurrent/IoTDBThreadPoolFactory.java