gpt4 book ai didi

java - 在循环中杀死一个非终止进程

转载 作者:行者123 更新时间:2023-11-29 05:00:27 27 4
gpt4 key购买 nike

我正在使用纯 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()

我可以在 30 秒后使用 Thread.stop() 终止进程吗?如果是这样,我该怎么做? [我意识到它已被弃用,但我找不到其他方法。] 或者有没有更好的方法来解决这个问题,而不修改 imageProcess()

本质上,我想将其作为过滤器运行:“拒绝所有处理时间超过 30 秒的图像”。

更新:跟随 Peter Lawrey,我正在探索 ProcessBuilder

他为 Java >=1.8 发布了一个简单的解决方案,我已经接受了。由于我目前使用的是 Java 1.7,因此我发布了我自己的答案,该答案适用于早期版本中的一个简单案例。

最佳答案

最好的选择是使用 ProcessBuilder 启动一个新流程。当此进程超时时,您可以对其调用 destroy() 并知道所有资源都将被清理。 (临时文件除外)

关于java - 在循环中杀死一个非终止进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32294727/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com