2011-12-19 29 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。

相關問題