TtlRunnable是否可以支持PriorityQueue和DelayQueue
simonHome opened this issue · 2 comments
simonHome commented
TtlRunnable
是否可以支持PriorityQueue
和DelayQueue
的Comparable task
接口?
举个例子:
线程池使用PriorityQueue
队列,然后execute(new PriorityTask())
。
如果这个时候插桩是在execute
时,PriorityTask
将包装成TtlRunnable
后offer
到队列中基于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
-
TTL
支持PriorityQueue
。- 在
v2.12.3
实现,v2.12.5
有这个功能的Bug Fix。 - 你可以使用试试,推荐用
TTL
最新版本 💕API
方式使用Demo
:TtlExecutorServiceWithPriorityBlockingQueueDemo
TTL Agent
方式透明支持
- 在
-
还没有支持
DelayQueue
。- 能说一下你的需求场景、使用方式吗?💕
- 需要想想实现方式
oldratlee commented
@simonHome issue 先 close 了,有问题可以继续讨论~ 💕