 submit(Runnable task, T result) {
            try {
                return e.submit(task, result);
            } finally {
                reachabilityFence(this);
            }
        }
        
        public <T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks) throws InterruptedException {
            try {
                return e.invokeAll(tasks);
            } finally {
                reachabilityFence(this);
            }
        }
        
        public <T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit) throws InterruptedException {
            try {
                return e.invokeAll(tasks, timeout, unit);
            } finally {
                reachabilityFence(this);
            }
        }
        
        public <T> T invokeAny(Collection<? extends Callable<T>> tasks) throws InterruptedException, ExecutionException {
            try {
                return e.invokeAny(tasks);
            } finally {
                reachabilityFence(this);
            }
        }
        
        public <T> T invokeAny(Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException {
            try {
                return e.invokeAny(tasks, timeout, unit);
            } finally {
                reachabilityFence(this);
            }
        }
    }
    
    /**
     * A wrapper class that exposes only the ScheduledExecutorService
     * methods of a ScheduledExecutorService implementation.
     */
    // 【定时任务执行框架代理】，限制只能执行ExecutorService接口与ScheduledExecutorService接口内的方法
    private static class DelegatedScheduledExecutorService extends DelegatedExecutorService implements ScheduledExecutorService {
        private final ScheduledExecutorService e;
        
        DelegatedScheduledExecutorService(ScheduledExecutorService executor) {
            super(executor);
            e = executor;
        }
        
        pu