我正在使用纯java“blackBox”处理图像,可以通过以下方式表示:
imageOut = imageProcess(imageIn);
这是一个循环:
for (int i = 0; i < 1000; i++) {
imageOut[i] = imageProcess(imageIn[i]);
}
几乎所有进程都在 2-5 秒内终止,但有一些(可能 2%)运行了很多分钟,有些似乎没有终止(我不知道为什么)。我想在(比如说)30 秒后终止这些,记录病理图像,然后转到下一个。blackBox 没有 i/o,也没有嵌入方法Thread.isInterrupted()
等。
我可以Thread.stop()
在 30 秒后终止进程吗?如果是这样,我该怎么做?[我意识到它已被弃用,但我找不到另一种方法。] 或者有没有更好的方法来解决这个问题,而无需修改imageProcess()
?
本质上,我想将其作为过滤器运行:“拒绝所有处理时间超过 30 秒的图像”。
更新:跟随彼得劳里我正在探索ProcessBuilder
。
他发布了一个简单的 Java >=1.8 解决方案,我已经接受了。由于我目前使用的是 Java 1.7,因此我发布了自己的答案,该答案适用于早期版本的简单案例。