我有一个运行 Callable 的线程,我有另一个线程,如果它花费的时间太长,它将中断第一个线程,但问题是中断似乎会导致更多问题。那么有没有一种方法可以让我的第二个线程查看运行 Callable 的线程的堆栈,而不会中断它,因此不会干扰它。
最佳答案
是的,您可以使用 Thread.getAllStackTraces()
检索所有可见线程的所有堆栈跟踪。这是 Map<Thread,StackTraceElement[]>
您可以查询以获取您感兴趣的线程的堆栈跟踪。
如果您有引用 t
转到您感兴趣的特定主题,然后
t.getStackTrace()
就是你所需要的。
请注意文档说
Some virtual machines may, under some circumstances, omit one or more stack frames from the stack trace.
根据我的经验,堆栈跟踪被限制为最多 1024 个元素。
关于java - 一个 Java 线程是否可以在不中断的情况下查看另一个线程的堆栈?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27547643/