我已经解决了我的问题的丑陋解决方案。它不是很漂亮,但是可以在我的情况下使用,因此我将其发布在这里,以防它对其他人有帮助。
我所做的是 分析
应用程序的库部分,希望我可以隔离一小部分被重复调用的方法,例如某些
get方法
equals()或类似的东西;然后我可以在其中插入以下代码段:
if (Thread.interrupted()) { // Not really necessary, but could help if the library does check it itself in some other place: Thread.currentThread().interrupt(); // Wrapping the checked InterruptedException because the signature doesn't declare it: throw new RuntimeException(new InterruptedException());}通过编辑库的代码手动插入它,或者通过编写适当的方面自动插入它。请注意,如果库尝试捕获并吞下一个
RuntimeException,则抛出的异常可以替换为库未尝试捕获的其他内容。
幸运的是,使用的VisualVM,我能找到一个 单一
的具体用法我正在图书馆的过程中调用了非常高数十倍方法。添加以上代码段后,它现在可以正确响应中断。
这当然是不可维护的,再加上什么也不能保证库在其他情况下会重复调用此方法。但这对我有用,并且由于配置其他应用程序并在其中插入检查相对容易,因此我认为这是一个通用的解决方案,尽管很难看。



