class RunTimeoutTimerTask extends AbstractTimeoutTimerTask {

    private final Thread thread;

    public RunTimeoutTimerTask(ExecutorWrapper executorWrapper, Runnable runnable, Thread thread) {
        super(executorWrapper, runnable);
        this.thread = thread;
    }

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

    public String traceToString(StackTraceElement[] trace) {
        StringBuilder builder = new StringBuilder(512);
        builder.append("\n");
        for (StackTraceElement traceElement : trace) {
            builder.append("\tat ").append(traceElement).append("\n");
        }
        return builder.toString();
    }
}

        val statProvider = executorWrapper.getThreadPoolStatProvider();
        ExecutorAdapter<?> executor = statProvider.getExecutorWrapper().getExecutor();
        val pair = getTaskNameAndTraceId();
        statProvider.incRunTimeoutCount(1);
        AlarmManager.tryAlarmAsync(executorWrapper, RUN_TIMEOUT, runnable);
        String logMsg = CharSequenceUtil.format("DynamicTp execute, run timeout, " +
                        "tpName: {}, taskName: {}, traceId: {}, runTimeout: {}ms, " +
                        "poolSize: {} (active: {}, core: {}, max: {}, largest: {}), " +
                        "queueCapacity: {} (currSize: {}, remaining: {}), stackTrace: {}",
                statProvider.getExecutorWrapper().getThreadPoolName(), pair.getLeft(), pair.getRight(),
                statProvider.getRunTimeout(), executor.getPoolSize(), executor.getActiveCount(),
                executor.getCorePoolSize(), executor.getMaximumPoolSize(), executor.getLargestPoolSize(),
                statProvider.getExecutorWrapper().getExecutor().getQueueCapacity(), executor.getQueue().size(),
                executor.getQueue().remainingCapacity(), traceToString(thread.getStackTrace()));
        log.warn(logMsg);
        if (statProvider.isTryInterrupt()) {
            thread.interrupt();
        }
    
<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