Ich habe einen Thread in Java, in dem Methode aufgerufen wird..Ich speicher eine Karte für jeden Thread, so dass ich es töten kann. Mein Beispielcode ist:Thread-Zeit der Ausführung in Java
Thread thread = new Thread(new Runnable() {
public void run() {
executeMethod();
}
});
thread.start();
thread.setName("some Name");
//Create Map to save each method call as thread
threadMap.put("some Name", thread);
Jetzt möchte ich durch das Töten der Thread die Methode aufrufen stoppen, so dass ich so etwas wie haben:
public static void stop(String threadName) {
if (StringUtils.isNotEmpty(threadName)) {
Thread t = threadMap.get(threadName);
if (t != null && t.isAlive()) {
System.out.println("Going to kill the thread:" + threadName);
t.interrupt();
System.out.println("killed!!");
} else {
System.out.println("THREAD is null");
}
}
}
Das Problem ist, wenn ich meine Stop-Methode genannt, t. isAlive() ist falsch. Ich nehme an, dass die Ausführungszeit der Methode die lebendige Zeit des Threads sein wird .. Am i Korrekt oder ich missverstehe es?
Beide Zitate dokumentieren nicht, welcher Wert von der isAlive() - Methode zurückgegeben werden soll. Mit einer solchen Logik sollte es niemals auf einem einzelnen CPU-Kernsystem den Wert true zurückgeben, da wir die isAlive() -Methode aufrufen, unser aufrufender Code läuft, so dass der Thread nicht läuft. – h22
Ich beantwortete die folgende Frage von OP: 'Ich nehme an, dass die Ausführungszeit der Methode die lebendige Zeit des Threads sein wird. Glauben Sie nicht, dass die Frage ist, welcher Wert von der 'isAlive()' Methode zurückgegeben werden soll. –