class CommonThreadPool implements DisposableBean {

    private ThreadPoolExecutor workerExecutor;

    public CommonThreadPool() {
        initWorkExecutor();
    }

    private void initWorkExecutor() {<FILL_FUNCTION_BODY>}

    /**
     * Run the task thread
     * @param runnable Task    
     * @throws RejectedExecutionException when thread pool full    
     */
    public void execute(Runnable runnable) throws RejectedExecutionException {
        workerExecutor.execute(runnable);
    }

    @Override
    public void destroy() throws Exception {
        if (workerExecutor != null) {
            workerExecutor.shutdownNow();
        }
    }
}

        ThreadFactory threadFactory = new ThreadFactoryBuilder()
                .setUncaughtExceptionHandler((thread, throwable) -> {
                    log.error("common executor has uncaughtException.");
                    log.error(throwable.getMessage(), throwable);
                })
                .setDaemon(true)
                .setNameFormat("common-worker-%d")
                .build();
        workerExecutor = new ThreadPoolExecutor(2,
                Integer.MAX_VALUE,
                10,
                TimeUnit.SECONDS,
                new SynchronousQueue<>(),
                threadFactory,
                new ThreadPoolExecutor.AbortPolicy());
    
<no_super_class>