Hallo,
ich werkel schon länger mit Java und insbesondere mit Java GUIs auf Swing Basis rum und wollte nun mal "meinen Horizont erweitern" und mich mit Threads beschäftigen (war bis dato nie notwendig).
Bis jetzt habe ich maximal mit Swing Workern gearbeitet und versuche gerade folgendes zu realisieren:
Ich würde gerne in meiner Main-Methode diverse Threads starten, darunter einen "logger" Thread der in verschiedene Dateien diverse debugging informationen speichert. Und natürlich das GUI.
Bis jetzt habe ich GUIs immer mittels SwingUtilites.invokeLater gestartet, allerdings ist damit die Main-Methode abgeschlossen.
Mein bisheriger workaround war mittels while(true) schleife und nem Thread.sleep(1000) in 1 sekunden intervallen zu prüfen ob das GUI noch aktiv ist oder nicht.
Dies erscheint mir irgendwie als kontraproduktiv.
Meine Frage daher lautet:
Wie genau bekomme ich es hin, dass ich in meiner Main-Methode mehrere Threads starte, diese so lange ideln (also auch keine CPU Last erzeugen) bis ich diesen aus dem GUI heraus z.b. per Knopfdruck eine neue Aufgabe "schicke" und dass sich diese Threads terminieren, sobald das GUI beendet wird.
Was genau ich machen will:
- So lang das GUI läuft sollen 2 Threads im Hintergrund Sensordaten auslesen/erfassen
- So lang das GUI läuft soll 1 Thread im Hintergrund "ideln" und nur on demand aktiv werden um z.b. debugging informationen in ein Logfile zu schreiben
- Einer der 2 "Sensordatenthreads" soll auf "Befehle" aus dem GUI reagieren, also z.b. bestimmte Dinge berechnen wenn ich im GUI den entsprechenden Button klicke
- Wenn das GUI beendet wird (sowohl über nen Exit button, als auch über die DefaultCloseOperation funktion) sollen auch alle threads terminieren
Bin für jeden Tipp dankbar, da ich bis dato nie wirklich mit Threads gearbeitet habe (ich weiß im prinzip nur wie man welche erzeugt und startet
).
ich werkel schon länger mit Java und insbesondere mit Java GUIs auf Swing Basis rum und wollte nun mal "meinen Horizont erweitern" und mich mit Threads beschäftigen (war bis dato nie notwendig).
Bis jetzt habe ich maximal mit Swing Workern gearbeitet und versuche gerade folgendes zu realisieren:
Ich würde gerne in meiner Main-Methode diverse Threads starten, darunter einen "logger" Thread der in verschiedene Dateien diverse debugging informationen speichert. Und natürlich das GUI.
Bis jetzt habe ich GUIs immer mittels SwingUtilites.invokeLater gestartet, allerdings ist damit die Main-Methode abgeschlossen.
Mein bisheriger workaround war mittels while(true) schleife und nem Thread.sleep(1000) in 1 sekunden intervallen zu prüfen ob das GUI noch aktiv ist oder nicht.
Dies erscheint mir irgendwie als kontraproduktiv.
Meine Frage daher lautet:
Wie genau bekomme ich es hin, dass ich in meiner Main-Methode mehrere Threads starte, diese so lange ideln (also auch keine CPU Last erzeugen) bis ich diesen aus dem GUI heraus z.b. per Knopfdruck eine neue Aufgabe "schicke" und dass sich diese Threads terminieren, sobald das GUI beendet wird.
Was genau ich machen will:
- So lang das GUI läuft sollen 2 Threads im Hintergrund Sensordaten auslesen/erfassen
- So lang das GUI läuft soll 1 Thread im Hintergrund "ideln" und nur on demand aktiv werden um z.b. debugging informationen in ein Logfile zu schreiben
- Einer der 2 "Sensordatenthreads" soll auf "Befehle" aus dem GUI reagieren, also z.b. bestimmte Dinge berechnen wenn ich im GUI den entsprechenden Button klicke
- Wenn das GUI beendet wird (sowohl über nen Exit button, als auch über die DefaultCloseOperation funktion) sollen auch alle threads terminieren
Bin für jeden Tipp dankbar, da ich bis dato nie wirklich mit Threads gearbeitet habe (ich weiß im prinzip nur wie man welche erzeugt und startet