2013-04-09 2 views
0

Привет, мне интересно, как я мог бы использовать таймер для уничтожения процесса, если он истекает предопределенный период времени в milisecs.с использованием таймера для уничтожения/interupt процесса в Java

В настоящее время у меня есть метод, который получает нить от выполнения

Runtime runtime = Runtime.getRuntime(); 

Я затем создать отдельный процесс для выполнения команды с помощью выполнения

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

Я тогда обрабатывать обычные выходные потоки/ошибка до звонка:

process.waitFor(); 

это ждет завершения процесса, если его еще нет.

Мой вопрос, как я могу идти об использовании таймера, чтобы завершить процесс до его завершения, то есть по телефону:

process.destroy; 

В принципе, если процесс работает на более чем определенный промежуток времени , Я хочу преждевременно уничтожить его.

Я бы тогда бросил InterruptedException, если он был уничтожен из-за превышения.

Мне сказали, что использование таймера было бы лучшим способом достичь этого, но не было уверен, что это так?

Любая помощь была бы чрезвычайно оценена.

+0

Эта нить кажется, хороший подход: http://stackoverflow.com/questions/2275443/how-to-timeout-a-thread Привет – Martin

+0

Вы спрашиваете, является ли это лучшим решением для использования таймера или примером реализации таймера? – icrovett

+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(); 
Смежные вопросы