0

嗨,我想知道如果进程经过了以毫秒为单位的预定义时间段,我如何使用计时器来销毁进程。

目前我有一个从运行时获取线程的方法

Runtime runtime = Runtime.getRuntime();

然后我创建单独的进程以使用运行时执行命令

 Process process = runtime.exec(comman); //where command is a string with a defined command

然后我在调用之前处理正常/错误输出流:

 process.waitFor(); 

如果它还没有,这会等待进程终止。

我的问题是,我怎样才能在进程完成之前使用计时器来终止进程,即通过调用:

 process.destroy;

基本上,如果该过程的工作时间超过一定时间,我想过早地销毁它。

如果由于过度运行而被破坏,我会抛出一个 InterruptedException。

有人告诉我,使用计时器是实现这一目标的最佳方式,但不确定是否是这种情况?

任何帮助将不胜感激。

4

1 回答 1

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();
于 2013-04-09T11:38:39.550 回答