如何知道当前是否有任何预定的timers

TimerQueue来管理计时器队列,但是所有的东西都是私有的或包私有的。

谢谢。

最佳答案

有TimerQueue来管理Timers队列,但是所有东西都是私有的或包私有的。


访问修饰符不会停止reflection。因此,您可以执行以下操作:

Timer t = new Timer();
TimerQueue tq = (TimerQueue) Timer.class.getField("queue").get(t);
boolean isEmpty = (Boolean) TimerQueue.class.getMethod("isEmpty").invoke(tq);


成员名称是从JDK源代码中挖掘出来的。私有内容不能以这种方式访问​​,因此这可能随时中断。没有强大的方法可以做到这一点。很遗憾Timer没有提供这样的API。

07-24 09:38