Frage

Ich möchte Fäden töten, die in Systemverklemmungszustand stecken. Erstens können wir Thread-IDs in Systemverklemmungszustand erkennen die findDeadlockedThreads() Methode der ThreadMXBean Klasse in java.lang.management verwendet wird.

Dann würde Ich mag die Fäden von Thread-IDs zu töten, und damit habe ich zwei ähnliche Fragen:
(1) Wie die Steuerung eines Fadens durch Thread-ID zu bekommen?
(2) Wie ein blockierter Thread zu töten? Ich denke, dass invokting Interrupt () -Methode wird eine Ausnahme von dem Thread geben und den Faden töten.

War es hilfreich?

Lösung

Von der Wurzel Thread, können Sie die Thread-Klasse alle laufenden Threads aufzählen . Dann können Sie Thread.stop auf der einen Anruf, dass Ihre ID entspricht.

gesagt hat, dass dies wegen des möglichen höchst gefährlich ist, Objekte in einem inkonsistenten Zustand zu verlassen. Ich glaube nicht, dass die Interrupt-Methode bewirkt, dass ein Thread, dass beim Warten auf einer Synchronisationssperre stecken befreit werden, so dass die (böse) stoppt Methoden

Siehe auch: „ Java-Thread Primitive Deprecation “.

Andere Tipps

Die java.util.concurrent.Lock.lockInterruptibly () Methode ist unterbrechbar, das weitaus häufige synchronisiert Verriegelung nicht. Wie in der Dokumentation erwähnt, ist die Fähigkeit, Deadlock-Threads aufzuzählen ist als Testhilfe gedacht und nicht als Mittel in einer Produktionsumgebung zu erholen.

In der Produktion ist es wahrscheinlich sicherer, den gesamten Prozess und Neustart zu beenden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top