我遇到的情况是InterruptedException
,但我在Thread.interrupt()
方法的开头放了一个断点,没有命中。
还有什么可能导致InterruptedException
被抛出?请注意,我只在Windows上遇到此问题,相同的代码在Linux上运行正常。由于中断方法委托给本机调用interrupt0,我猜它来自那里。但我该如何进一步调查?
由于
修改
我发现了我的问题。这也是我对中断机制的误解。确实调用了Thread.interrupt。在我开始wait()之前很久就会调用它。但是当线程激活了中断标志时,第一次调用wait会立即抛出异常。
在我的例子中,log4j在尝试在无效地址上创建NonBlockingSocketAppender时设置了中断标志。奇怪的是,它会中断当前正在运行的线程......