嗨我想知道如果它以毫秒为单位经过一个预定义的时间段,我怎么能用一个计时器来销毁一个进程。
目前我有一个从运行时获取线程的方法
Runtime runtime = Runtime.getRuntime();
然后,我创建单独的进程以使用运行时执行命令
Process process = runtime.exec(comman); //where command is a string with a defined command
然后我在调用之前处理正常/错误输出流:
process.waitFor();
如果进程尚未终止,则等待进程终止。
我的问题是,如何在完成之前使用计时器终止进程,即通过调用:
process.destroy;
基本上,如果这个过程的工作时间超过一定的时间,我想过早地销毁它。
如果因为过度运行而被销毁,我会抛出一个InterruptedException。
我被告知使用计时器是实现这一目标的最佳方式,但不确定是否是这种情况?
非常感谢任何帮助。
答案 0 :(得分:0)
试
final Process p = ...
final Thread mainThread = Thread.currentThread();
Thread t = new Thread() {
public void run() {
try {
Thread.sleep(1000);
p.destroy();
mainThread.interrupt();
} catch (InterruptedException e) {
}
};
};
p.waitFor();
if (mainThread.isInterrupted()) {
throw new InterruptedException();
}
t.interrupt();