Wie um zu überprüfen, ob mein thread ist die Ausführung von Java
Schrieb ich eine einfache JSF 2.0 Webapp, die sammelt Daten, speichert diese in einer ArrayList, dann generiert eine JSON-Datei. Dieser Prozess führt alle n Sekunden. Meine webapp hat eine Taste zum starten und stoppen diesen Prozess. Dazu erstellte ich ein daemon-thread. Das problem ist ich nehme an beim ersten Start, dass der daemon nicht gestartet. Was ich tun möchte, ist jedes mal, wenn die webapp gestartet wurde, überprüfen, um zu sehen, ob mein daemon-thread ausgeführt wird oder nicht. Auf diese Weise, wenn ich navigieren Weg von meiner webapp und kommen zurück, es wird richtig geben Sie mir ein start-oder Stopp-option. Ich habe gegoogelt um ein bisschen und noch nicht in der Lage, eine Lösung zu finden für diese.
Gibt es eine Möglichkeit zu überprüfen, ob ein bestimmter thread gerade läuft in der JVM?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Thread-Klasse
Thread Exception-Handler setzt die variable im Falle der Ausnahme
Ihre Start - /Stop-Methode erhalten die variable aus dem ServletContext und überprüfen isRunning Methode. Und dann verwenden setRunning () - Methode.
BEARBEITET
Dein code sollte
Ich hoffe, das hilft.
Wenn Sie ein daemon thread, dann wird es beendet, mit dem JVM. Also, wenn Sie navigieren Weg von der webapp, wahrscheinlich ist die ganze java-Prozess beendet ist, zusammen mit dem thread.Ok, jetzt sehe ich, Sie haben eine server-side-java-und web-client. So Sie benötigen, um einen Verweis auf den thread. Vielleicht haben Sie eine Anwendung scoped bean hält eine Referenz auf alle threads, die Sie haben. Wenn Benutzer anmeldet-in können Sie überprüfen, ob die entsprechenden user-thread ausgeführt wird oder nicht, durch aufrufen von entsprechenden thread-Methoden.
Wenn Sie einen nur ein thread für alle Benutzer, dann Sie können eine einzige Referenz. Macht das Sinn?