使用计时器来破坏/中断Java中的进程

时间:2013-04-09 11:31:56

标签: java multithreading process timer runtime

嗨我想知道如果它以毫秒为单位经过一个预定义的时间段,我怎么能用一个计时器来销毁一个进程。

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

Runtime runtime = Runtime.getRuntime();
然后,我创建单独的进程以使用运行时

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

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

 process.waitFor(); 

如果进程尚未终止,则等待进程终止。

我的问题是,如何在完成之前使用计时器终止进程,即通过调用:

 process.destroy;

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

如果因为过度运行而被销毁,我会抛出一个InterruptedException。

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

非常感谢任何帮助。

1 个答案:

答案 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();