java - 杀死java中的无限循环

标签 java kill infinite-loop

我正在使用第三方库来处理大量数据集。该过程偶尔会进入无限循环(或被阻塞-不知道为什么也无法进入代码)。我想在设定的时间后杀死它并继续下一个案例。一个简单的例子是:

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/

相关文章:

python - 在 Windows 上从 Python 脚本中终止由批处理文件启动的外部进程

java - 防止java中的无限循环

java - 乘法时结果不同

java - 将所有 java swing gui 放在一个类中是否正常?

java - 如何获取 OrdImage 的库

postgresql - postgres - 防止规则/触发器调用自己 - 无限循环

excel - 无休止的 VBA 循环,除非我单步执行代码

java - 并发 HashMap - 故障安全问题

python - 如何根据PID杀死GPU?

macos - osx-如何以编程方式获取进程ID(PID)?