add ThreadPoolExhaustedEvent and publish it in AbortPolicyWithReport.rejectedExecution method
user can listen ThreadPoolExhaustedEvent to do some alert
return;
        }
        ExecutorService pool = Executors.newSingleThreadExecutor();
        pool.execute(() -> {
            String dumpPath = url.getParameter(DUMP_DIRECTORY, System.getProperty("user.home"));
            SimpleDateFormat sdf;
            String os = System.getProperty(OS_NAME_KEY).toLowerCase();
            
            if (os.contains(OS_WIN_PREFIX)) {
                sdf = new SimpleDateFormat(WIN_DATETIME_FORMAT);
            } else {
                sdf = new SimpleDateFormat(DEFAULT_DATETIME_FORMAT);
            }
            String dateStr = sdf.format(new Date());
            
            try (FileOutputStream jStackStream = new FileOutputStream(
                new File(dumpPath, "Dubbo_JStack.log" + "." + dateStr))) {
                JVMUtil.jstack(jStackStream);
            } catch (Throwable t) {
                logger.error("dump jStack error", t);
            } finally {
                guard.release();
            }
            lastPrintTime = System.currentTimeMillis();
        });
        
        pool.shutdown();
    }
}