class ThreadPoolExecutorWrapper {
    private static final Logger LOG = LoggerFactory.getLogger(ThreadPoolExecutorWrapper.class);
    private final ScheduledExecutorService executor;
    private final int count;
    private final AtomicInteger runCounter;
    private final String name;

    public ThreadPoolExecutorWrapper(ScheduledExecutorService executor, int count, String name) {
        this.executor = executor;
        this.count = count;
        this.runCounter = new AtomicInteger();
        this.name = name;
    }

    public void execute(Runnable task) {<FILL_FUNCTION_BODY>}

    public void shutdown() {
        executor.shutdown();
    }
}

        int startCount = runCounter.incrementAndGet();
        LOG.debug("Submit task and current task count {}", startCount);
        final long startTime = System.currentTimeMillis();
        executor.execute(() -> {
            try {
                task.run();
            } finally {
                int endCount = runCounter.decrementAndGet();
                LOG.debug("Finish task and current task count {} use time {}", endCount, System.currentTimeMillis()-startTime);
            }
        });
    
<no_super_class>