2011-12-19 93 views
2

如何知道当前是否有计划的timers如何知道是否有任何计划的计时器

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

谢谢。

+0

请注意:TimerQueue _does not_管理java.util.Timer的队列,而是管理javax.swing.Timer的队列 – kleopatra 2011-12-20 12:38:33

+0

好奇:您为什么认为您需要这些信息? – kleopatra 2011-12-20 12:39:40

+0

@kleopatra,固定 – 2011-12-20 18:43:45

回答

2

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

访问修饰符不停止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。

相关问题