有点不正统的情况 - 基本上我有线程 A 监视线程 B。如果线程 A 检测到线程 B 负责的周期性任务之一(线程 B 不是 a 的一部分ThreadPoolExecutor
,它是 MINA 的线程之一)已经过时,线程 A报告一个错误。所以我收到了这些错误,想知道线程 B 卡在哪里。所以线程 A 调用线程 BgetStackTrace()
并打印堆栈似乎很聪明,这样我就可以看到 B 卡在什么愚蠢的活动上。
在实践中,我会稍微适应一下,因为如果任务没有运行,线程 B 的堆栈很可能因为 B 被阻塞而在相当长的一段时间内没有改变。但在理论上,有时在实践中,当线程 A 尝试获取其堆栈跟踪时,线程 B 的堆栈会发生变化。所以我想知道这是否是线程安全操作。