## Describe the feature

https://github.com/apache/dubbo/blob/daa4d8eb2e5290f1100d32ed0b93896e10fe7ca7/dubbo-common/src/main/java/org/apache/dubbo/common/threadpool/support/AbortPolicyWithReport.java#L90

current threadpool  abort policy will  dump stack  when threadpool is exhausted. this will casue a STW, in some suitation, it will cost 10s+.  app will hang 10s+, need make it configurable


protected static final ErrorTypeAwareLogger logger = LoggerFactory.getErrorTypeAwareLogger(AbortPolicyWithReport.class);
    private final String threadName;
    private final URL url;
    protected static volatile long lastPrintTime = 0;
    private static final long TEN_MINUTES_MILLS = 10 * 60 * 1000;
    private static final String WIN_DATETIME_FORMAT = "yyyy-MM-dd_HH-mm-ss";
    private static final String DEFAULT_DATETIME_FORMAT = "yyyy-MM-dd_HH:mm:ss";
    protected static Semaphore guard = new Semaphore(1);
    private static final String USER_HOME = System.getProperty("user.home");
    private final Set<ThreadPoolExhaustedListener> listeners = new ConcurrentHashSet<>();
    public AbortPolicyWithReport(String threadName, URL url) {
        this.threadName = threadName;
        this.url = url;
        String threadPoolExhaustedListeners =
            url.getParameter(THREAD_POOL_EXHAUSTED_LISTENERS_KEY, (String) url.getAttribute(THREAD_POOL_EXHAUSTED_LISTENERS_KEY));
        Set<String> listenerKeys = StringUtils.splitToSet(threadPoolExhaustedListeners, COMMA_SEPARATOR_CHAR, true);
        FrameworkModel frameworkModel = url.getOrDefaultFrameworkModel();
        ExtensionLoader<ThreadPoolExhaustedListener> extensionLoader = frameworkModel.getExtensionLoader(ThreadPoolExhaustedListener.class);
        listenerKeys.forEach(key -> {
            if (extensionLoader.hasExtension(key)) {
                addThreadPoolExhaustedEventListener(extensionLoader.getExtension(key));