olExecutor(1));
    }
    
    /**
     * Creates a single-threaded executor that can schedule commands
     * to run after a given delay, or to execute periodically.  (Note
     * however that if this single thread terminates due to a failure
     * during execution prior to shutdown, a new one will take its
     * place if needed to execute subsequent tasks.)  Tasks are
     * guaranteed to execute sequentially, and no more than one task
     * will be active at any given time. Unlike the otherwise
     * equivalent {@code newScheduledThreadPool(1, threadFactory)}
     * the returned executor is guaranteed not to be reconfigurable to
     * use additional threads.
     *
     * @param threadFactory the factory to use when creating new threads
     *
     * @return the newly created scheduled executor
     *
     * @throws NullPointerException if threadFactory is null
     */
    /*
     *【定时任务线程池代理】，允许自行指定线程工厂
     *
     * 用于执行一次性或周期性的定时任务，线程池中只有一个常驻线程。
     *
     * 配置：
     * - 阻塞队列   : DelayedWorkQueue
     * -【核心阙值】: 1
     * -【最大阙值】: 无限
     */
    public static ScheduledExecutorService newSingleThreadScheduledExecutor(ThreadFactory threadFactory) {
        return new DelegatedScheduledExecutorService(new ScheduledThreadPoolExecutor(1, threadFactory));
    }
    
    /**
     * Returns an object that delegates all defined {@link
     * ScheduledExecutorService} methods to the given executor, but
     * not any other methods that might otherwise be accessible using
     * casts. This provides a way to safely "freeze" configuration and
     * disallow tuning of a given concrete implementation.
     *
     * @param executor the underlying implementation
     *
     * @return a {@code ScheduledExecutorService} instance
     *
     * @throws NullPointerException if executor null
     */
    /*
     *【定时任务线程池代理】
     *
     * 不可自定义配�