我有一些看起来像这样的代码:
executorService.submit(new Runnable() {
@Override public void run() {
while (!Thread.currentThread().isInterrupted()) {
doWork();
}
}
});
此代码有时无法退出 while 循环,因为内部某处正在清除中断标志doWork()
。此方法调用第三方库,其中之一是吞下中断。
首先,有什么具体的技术可以用来诊断吗?其次,是否有任何静态分析工具能够发现这种错误?