2012-01-21 40 views
1

我想在程序执行的每一个时刻,现在执行什么的线程(在JVM中不是所有的线程,但只属于我的程序线程)就知道了。如何监听当前线程更改?

我怎样才能得到它呢?

+0

或许还有一个分析器。 –

回答

1

YourKit可以告诉你哪些线程是在任何特定时刻运行,阻塞,等待等等,给你每隔一段时间堆栈的快照。

您可以创建一个过程,自己轮询所有的线程与Thread.getAllStackTraces()它给你的每个线程的堆栈跟踪。使用GUI工具要容易得多。

+0

'Thread.getAllStackTraces()'列出所有活动的线程,包括甚至睡眠一个。是否有可能只得到那些刚才执行的线程?或者倾听像当前线程更改这样的事件? –

+0

您可以获得感兴趣的线程列表,并在每个线程上调用getStackTrace。你对什么样的线程改变感兴趣? –

+0

我想监听处理器将当前执行的线程从我的程序的一个线程更改为另一个线程的情况。在这两个执行之间,可能会执行不属于我的程序的其他线程。 –