我正在使用第三方库来处理大量数据集。该过程偶尔会进入无限循环(或被阻塞-不知道为什么也无法进入代码)。我想在设定的时间后杀死它并继续下一个案例。一个简单的例子是:
for (Object data : dataList) {
Object result = TheirLibrary.processData(data);
store(result);
}
processData 通常最多需要 1 秒。我想设置一个计时器,在 10 秒后终止 processData()
编辑 我将不胜感激代码片段(我没有使用线程)。 Executor 方法看起来很有用,但我不太清楚如何开始。此外,更传统方法的伪代码对我来说太笼统了,无法编写代码。
@Steven Schlansker - 建议除非第三方应用程序预料到中断,否则它将无法工作。再次感谢详细信息和示例
编辑 我从我的同事 Sam Adams 那里得到了我想要的精确解决方案,我将其附加为答案。它比其他答案更详细,但我会给他们两个投票。我会将 Sam 标记为已批准的答案
最佳答案
ExecutorService.invokeAll(...) 之一方法采用超时参数。创建调用库的单个 Callable,并将其包装在 List 中作为该方法的参数。返回的 Future 表明它是如何进行的。
(注:未经本人测试)
关于java - 杀死java中的无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3489467/