2012-01-16 40 views
8

我有一個很大的項目,也使用很多庫。隨着jstack我發現,有喜歡的主題:如何找到定時器線程的來源?

Timer-2, Timer-3, Timer-4.... 

和所有jstack可我顯示:

java.lang.Thread.State: TIMED_WAITING (on object monitor) 
    at java.lang.Object.wait(Native Method) 
    at java.util.TimerThread.mainLoop(Unknown Source) 
    - locked <0x1a013c24> (a java.util.TaskQueue) 
    at java.util.TimerThread.run(Unknown Source) 

是否有可能尋找到這些線程在那裏創建了一個類?

+0

它看起來像一個泳池。問題是要找到誰正在將任務添加到此池中。 – helios 2012-01-16 11:30:38

+0

http://www.java2s.com/Code/JavaAPI/java.lang/ThreadenumerateThreadtarray.htm – user1097489 2012-01-16 12:03:13

回答

2

定時器線程由java.util.Timer創建。

如果您能夠使用調試器,您應該能夠在Timer構造函數中設置斷點並找出源代碼。

+0

我想,可能使用AspectJ? – user710818 2012-01-17 15:01:21

1

在調試環境中運行代碼,並在Thread構造函數中放置一個斷點。

+0

這是一個問題,由其中一個庫創建的線程 - 我需要找到哪個。 – user710818 2012-01-16 14:32:24

+0

在調試器下,您將能夠看到任何這些庫創建線程的時間。 – gliptak 2012-01-16 14:39:51

+0

調試器下的所有代碼 - 只有標準庫 – user710818 2012-01-16 20:56:54