我正在尝试构建一个简单的测试用例以发送给 IBM 以尝试解决此问题
我认为创建一个 JUnit 测试用例或一个小的主应用程序进行调用并显示 MQ 调用从未返回是很简单的。我想我会使用 Executor 服务,将我的 MQ 调用包装在 Callable 中,然后使用 Future.get() 将其提交给 executor 服务,并指定超时间隔。
可以肯定的是,调用超时,但应用程序不会死掉。如果我使用 Assert.fail() 或者当超时异常被捕获时,它不会发生,尽管超时异常的堆栈跟踪确实会打印出来。我只能在外部或通过调用 System.exit() 来终止程序。我也不想这样做。有没有办法在 java.util.concurrent 包的框架内杀死线程?
这个问题提供了一个解决方案,但需要注意的是
只要您不在任务中进行不间断的阻塞调用
但这正是我正在做的。有没有办法杀死一个从内部调用不间断 I/O 的程序?