��█████████████████████┛ */
    
    
    
    /*▼ 【任务执行框架代理】 ████████████████████████████████████████████████████████████████████████████████┓ */
    
    /**
     * Returns an object that delegates all defined {@link
     * ExecutorService} 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 an {@code ExecutorService} instance
     *
     * @throws NullPointerException if executor null
     */
    // 不可配置
    public static ExecutorService unconfigurableExecutorService(ExecutorService executor) {
        if(executor == null) {
            throw new NullPointerException();
        }
        
        return new DelegatedExecutorService(executor);
    }
    
    /*▲ 【任务执行框架代理】 ████████████████████████████████████████████████████████████████████████████████┛ */
    
    
    
    /*▼ 【线程池】 ████████████████████████████████████████████████████████████████████████████████┓ */
    
    /**
     * Creates a thread pool that creates new threads as needed, but
     * will reuse previously constructed threads when they are
     * available.  These pools will typically improve the performance
     * of programs that execute many short-lived asynchronous tasks.
     * Calls to {@code