alibaba / transmittable-thread-local

📌 a missing Java std lib(simple & 0-dependency) for framework/middleware, provide an enhanced InheritableThreadLocal that transmits values between threads even using thread pooling components.
https://github.com/alibaba/transmittable-thread-local
Apache License 2.0
7.59k stars 1.69k forks source link

TtlRunnable是否可以支持PriorityQueue和DelayQueue #605

Closed simonHome closed 6 months ago

simonHome commented 6 months ago

TtlRunnable是否可以支持PriorityQueueDelayQueueComparable task接口?

举个例子:

线程池使用PriorityQueue队列,然后execute(new PriorityTask())

如果这个时候插桩是在execute时,PriorityTask将包装成TtlRunnableoffer到队列中基于PriorityQueue底层的Compare机制会将Runnable强转成Comparable接口进而出现异常。

是否有考虑过支持这种场景?

public static class PriorityTask implements Runnable, Comparable<PriorityTask> {
    private final int order;
    public PriorityTask(int order) {
        this.order = order;
    }

    @Override
    public int compareTo(PriorityTask o) {
        return Integer.compare(this.order, o.order);
    }

    @Overrid
    public void run() {
        System.out.println("测试执行" + order);
        try {
            Thread.sleep(3000);
        } catch (InterruptedException e) {
        }
    }
}
oldratlee commented 6 months ago

@simonHome

oldratlee commented 6 months ago

@simonHome issue 先 close 了,有问题可以继续讨论~ 💕