class QueueTimeoutTimerTask extends AbstractTimeoutTimerTask {

    public QueueTimeoutTimerTask(ExecutorWrapper executorWrapper, Runnable runnable) {
        super(executorWrapper, runnable);
    }

    @Override
    protected void doRun() {<FILL_FUNCTION_BODY>}
}

        val statProvider = executorWrapper.getThreadPoolStatProvider();
        ExecutorAdapter<?> executor = statProvider.getExecutorWrapper().getExecutor();
        val pair = getTaskNameAndTraceId();
        statProvider.incQueueTimeoutCount(1);
        AlarmManager.tryAlarmAsync(executorWrapper, QUEUE_TIMEOUT, runnable);
        String logMsg = CharSequenceUtil.format("DynamicTp execute, queue timeout, " +
                        "tpName: {}, taskName: {}, traceId: {}, queueTimeout: {}ms, " +
                        "poolSize: {} (active: {}, core: {}, max: {}, largest: {}), " +
                        "queueCapacity: {} (currSize: {}, remaining: {})",
                statProvider.getExecutorWrapper().getThreadPoolName(), pair.getLeft(), pair.getRight(),
                statProvider.getQueueTimeout(), executor.getPoolSize(), executor.getActiveCount(),
                executor.getCorePoolSize(), executor.getMaximumPoolSize(),
                executor.getLargestPoolSize(), statProvider.getExecutorWrapper().getExecutor().getQueueCapacity(),
                executor.getQueue().size(), executor.getQueue().remainingCapacity());
        log.warn(logMsg);
    
<methods>public void run(org.dromara.dynamictp.common.timer.Timeout) throws java.lang.Exception<variables>protected final non-sealed org.dromara.dynamictp.core.support.ExecutorWrapper executorWrapper,protected final non-sealed java.lang.Runnable runnable