T
trez
Gast
Hallo miteinander.
Mein Problem ist, dass Threads, mehr oder weniger direkt, Prozesse starten, welche auch blokieren können. (Ach ja es handelt sich um Windows und die im echten Projekt gestarteten Programme sind nicht veränderbar)
Für das Beispiel welches das Problem aufzeigt, verwendete ich ein bat-script, welches mit ping -n 100 > NUL eine Blockade simuliert. (Es werden 100 Pings im Absstand von je einer Sekunde abgesetzt)
Der Thread verliert nach 10 Sekunden die Geduld, beendet den Prozess und terminiert.
Leider läuft der Ping-Prozess danach noch weiter. Wie werde ich den los?
Mein Problem ist, dass Threads, mehr oder weniger direkt, Prozesse starten, welche auch blokieren können. (Ach ja es handelt sich um Windows und die im echten Projekt gestarteten Programme sind nicht veränderbar)
Für das Beispiel welches das Problem aufzeigt, verwendete ich ein bat-script, welches mit ping -n 100 > NUL eine Blockade simuliert. (Es werden 100 Pings im Absstand von je einer Sekunde abgesetzt)
Der Thread verliert nach 10 Sekunden die Geduld, beendet den Prozess und terminiert.
Leider läuft der Ping-Prozess danach noch weiter. Wie werde ich den los?
Java:
public class Versuch {
private static class MyRunnable implements Runnable {
@Override
public void run() {
long startTime = System.currentTimeMillis();
try {
Process p = Runtime.getRuntime().exec("c:/tmp/test.bat");
while (p.isAlive()) {
Thread.sleep(1000);
if ((System.currentTimeMillis() - startTime) > 10000) {
p.destroy();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
MyRunnable mr = new MyRunnable();
Thread t = new Thread(mr);
t.start();
try {
t.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}