class NoticeManager {

    private static final ExecutorService NOTICE_EXECUTOR = ThreadPoolBuilder.newBuilder()
            .threadFactory("dtp-notify")
            .corePoolSize(1)
            .maximumPoolSize(1)
            .workQueue(LINKED_BLOCKING_QUEUE.getName(), 100)
            .rejectedExecutionHandler(RejectedTypeEnum.DISCARD_OLDEST_POLICY.getName())
            .buildCommon();

    private NoticeManager() { }

    private static final InvokerChain<BaseNotifyCtx> NOTICE_INVOKER_CHAIN;

    static {
        NOTICE_INVOKER_CHAIN = NotifyFilterBuilder.getCommonInvokerChain();
    }

    public static void tryNoticeAsync(ExecutorWrapper executor, TpMainFields oldFields, List<String> diffKeys) {
        NOTICE_EXECUTOR.execute(() -> doTryNotice(executor, oldFields, diffKeys));
    }

    public static void doTryNotice(ExecutorWrapper executor, TpMainFields oldFields, List<String> diffKeys) {<FILL_FUNCTION_BODY>}

    public static void destroy() {
        NOTICE_EXECUTOR.shutdownNow();
    }
}

        NotifyHelper.getNotifyItem(executor, CHANGE).ifPresent(notifyItem -> {
            val noticeCtx = new NoticeCtx(executor, notifyItem, oldFields, diffKeys);
            NOTICE_INVOKER_CHAIN.proceed(noticeCtx);
        });
    
<no_super_class>