Я разработал веб-приложение JSP, которое при каждом запросе порождает новый поток Java.В каждом вновь порожденном потоке я создаю Process с помощью Runtime.exec () и сохраняю объект процесса в переменной экземпляра в потоке.У меня есть требование, в котором я должен убить созданный подпроцесс, а также остановить поток.Итак, я переопределил метод прерывания в потоке и в переопределенном методе, который я вызываю destroy () для уже сохраненного объекта Process в переменной экземпляра.Ниже приведен код:
public class MyThread extends Thread {
private Process subprocess;
@Override
public void run() {
subprocess = Runtime.getRuntime().exec("myprocess.exe");
subprocess.waitFor();
/*
Some more statements
*/
}
@Override
public void interrupt() {
if(subprocess!=null) {
System.out.println("Destroying Process");
subprocess.destroy();
}
super.interrupt();
}
}
Необязательно ли переопределять метод прерывания?Важно, чтобы я уничтожил созданный процесс, прежде чем прерывать поток, который его создает.Я вижу, что поток действительно прерывается, потому что операторы после waitFor () не выполняются .Но, однако, destroy () не работает (но вызывается), и созданный «myprocess.exe» завершает выполнение, даже если я вызываю метод interrupt () до его завершения.Может кто-нибудь помочь мне с этим?Чего мне не хватает?
Заранее спасибо