Swing Fragen bezüglich Multithreaded GUIs (Grundlagen):

Ulathar

Aktives Mitglied
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 :)).
 
S

SlaterB

Gast
Threads starten kannst du (fast) so viele wie du willst, wo du willst, mit Thread.sleep() verbrauchen sie kaum CPU-Zeit,
und wenn die Zeit gekommen ist, sie zu beenden, etwa in einem WindowListener, dann beendest du diese Threads eben,
setzt irgendein flag auf true, führst optional interrupt() aus, und die Threads berücksichtigen das flag beim nächsten Schleifendurchlauf,

speziell bei GUIs gibts da kaum was besonderes, du musst natürlich organisieren, wo die Thread-Objekte abgelegt sind, wer wen kennt,

Thread, sleep, flag, interrupt sind die Grundbausteine, je nach eigenen Bemühungen hin zu gemeinsamen Klassen oder Suche in der API gibts natürlich auch schönere Umsetzungen, Timer, SwingWorker usw.
 
Zuletzt bearbeitet von einem Moderator:

P@u1

Aktives Mitglied
Für den Thread der im Hintergrund idlen soll und auf daten für ein logfile wartet würde sich eine Blockingqueue anbieten, dann machst du queue.take() und der thread wird solange angehalten, bis jemand was in die queue tut, oder der thread interrupted wird.

Beim beenden der GUI kannst du dann entweder System.exit aufrufen (eher unschön, der logger kann z.B. mitten in der arbeit unterbrochen werden), oder du rufst bei allen anderen threads thread.interrupt(); auf und danach thread.join() auf.
Wichtig ist nur das die anderen threads auch auf interrupt in absehbarer zeit reagieren (durch isInterrupted() oder durch blockende operationen wie queue.take(), die InterruptedException werfen).
 
Zuletzt bearbeitet:

Wildcard

Top Contributor
Setz die Threads als Daemon Threads, damit werden sie automatisch beendet wenn alle anderen non-daemon Threads beendet sind.
Für die Aufgabe die du beschreibst eignet sich zB eine BlockingQueue.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
thor_norsk Allgemeine Fragen AWT, Swing, JavaFX & SWT 6
thor_norsk Allgemeine Fragen AWT, Swing, JavaFX & SWT 4
U Zwei Fragen zu eienr Swing Aufgabe AWT, Swing, JavaFX & SWT 2
K JavaFX Allgemeine Fragen zu dem Aufbau eines Programms hinsichtlich der Klassen AWT, Swing, JavaFX & SWT 1
D Fragen zur GUI AWT, Swing, JavaFX & SWT 4
M NetBeans JFrame Grundlangen fragen AWT, Swing, JavaFX & SWT 6
T JavaFX Allgemeine Fragen zu JavaFX (uA zu Properties) AWT, Swing, JavaFX & SWT 6
D Panel wird nicht angezeigt und Fragen zum CardLayout AWT, Swing, JavaFX & SWT 6
K Fragen zu JavaFx Canvas AWT, Swing, JavaFX & SWT 0
N Swing Fragen zu non-modal JDialog AWT, Swing, JavaFX & SWT 1
Q Fragen zur JMenuBar & Co. AWT, Swing, JavaFX & SWT 3
F DefaultTreeCellEditor - Fragen zur Groesse und zum Icon beim Editieren AWT, Swing, JavaFX & SWT 4
Kenan89 JMenu Fragen AWT, Swing, JavaFX & SWT 5
Luk10 (LWJGL) Fragen zu VBOs AWT, Swing, JavaFX & SWT 21
M Swing JTextPane + Scrollbar = Fragen AWT, Swing, JavaFX & SWT 15
S Fragen zu JList AWT, Swing, JavaFX & SWT 3
J Das erste Projekt und ein Haufen von Fragen. Der SudokuReader. AWT, Swing, JavaFX & SWT 4
Luk10 Fragen zum Laden von Fonts AWT, Swing, JavaFX & SWT 4
Luk10 Fragen zum Koordinaten System AWT, Swing, JavaFX & SWT 3
M JTable Grundlegende Fragen AWT, Swing, JavaFX & SWT 4
B Prozentrechner GUI Fragen AWT, Swing, JavaFX & SWT 4
H Fragen zu JPanel und JButton AWT, Swing, JavaFX & SWT 3
Q Swing Zeichenprogramm, grundlegende Fragen AWT, Swing, JavaFX & SWT 8
R LayoutManager GridBagLayout Fragen AWT, Swing, JavaFX & SWT 10
A diverse Layout-Fragen AWT, Swing, JavaFX & SWT 4
M LayoutManager Einige Fragen zum GridBagLayout AWT, Swing, JavaFX & SWT 13
H Swing Zwei Fragen AWT, Swing, JavaFX & SWT 5
S 2D-Grafik Diverse Fragen zu Imagemanipulation in Java AWT, Swing, JavaFX & SWT 11
C Swing Grundsätzliche Fragen zu MVC AWT, Swing, JavaFX & SWT 8
F 3 Fragen zu Applets AWT, Swing, JavaFX & SWT 4
L Klick auf JTable -> EditorPane manipulieren, Fragen zu TableModel AWT, Swing, JavaFX & SWT 9
S Fragen zu GridBagLayout AWT, Swing, JavaFX & SWT 6
B Zeichnen in Swing - Jede Menge Fragen! AWT, Swing, JavaFX & SWT 2
D Fragen zu Swing, paintComponent() und repaint AWT, Swing, JavaFX & SWT 6
D GridBagLayout und JEditorPane (mehrere fragen) AWT, Swing, JavaFX & SWT 2
A Swing einfache fragen zu frame AWT, Swing, JavaFX & SWT 10
P Mehrere Fragen AWT, Swing, JavaFX & SWT 4
A Fragen zu Microber AWT, Swing, JavaFX & SWT 4
C Mehrer Fragen zu großem kompletten Swing Beispiel AWT, Swing, JavaFX & SWT 5
T Fragen zu JList und DnD AWT, Swing, JavaFX & SWT 13
I Einige Fragen zu JList AWT, Swing, JavaFX & SWT 6
I Drei Fragen/Probleme mit einer JTable AWT, Swing, JavaFX & SWT 9
G Fragen zum FileChooser AWT, Swing, JavaFX & SWT 5
M 2 Kleine Fragen zum JOptionFrame AWT, Swing, JavaFX & SWT 5
G performance fragen zu AWT, Swing AWT, Swing, JavaFX & SWT 14
J Fragen zu JTable und JScrollpane AWT, Swing, JavaFX & SWT 2
R Frage zu Listfeld oder jTable, auch andere Fragen AWT, Swing, JavaFX & SWT 5
C Fragen zur Darstellung einer JTable mittels Renderer AWT, Swing, JavaFX & SWT 2
ModellbahnerTT Fragen zu AWT AWT, Swing, JavaFX & SWT 3
S Fragen Databinding? AWT, Swing, JavaFX & SWT 3
J Fragen zu AWT Komponenten AWT, Swing, JavaFX & SWT 5
U 2 Fragen zu BufferedImages AWT, Swing, JavaFX & SWT 19
J Fragen zur Vererbung und Update AWT, Swing, JavaFX & SWT 12
J Fragen zum SyntaxHighlighting (DefaultStyledDocument) AWT, Swing, JavaFX & SWT 2
I Ein paar SWT Fragen AWT, Swing, JavaFX & SWT 10
P Zwei Fragen zu Bildern in Applets AWT, Swing, JavaFX & SWT 2
isowiz Einige Fragen zur ersten eigenen Sing-Applikation AWT, Swing, JavaFX & SWT 4
G 2 Fragen JDesktopPane AWT, Swing, JavaFX & SWT 4
S Fragen zu einem Beispiel(Swings und AWT) AWT, Swing, JavaFX & SWT 33
G Fragen zum Ocean Look and Feel AWT, Swing, JavaFX & SWT 3
G Neue Komponente erstellen - Fragen/Probleme mit MouseEvents AWT, Swing, JavaFX & SWT 2
Y 2 Fragen- JList Inhalt ändern und Fenster invisible setzen AWT, Swing, JavaFX & SWT 5
C Gemischte Fragen AWT, Swing, JavaFX & SWT 10
G Fragen zu JList AWT, Swing, JavaFX & SWT 12
K 2 fragen:JCheckBoxMenuItem und ComboBox AWT, Swing, JavaFX & SWT 2
T Mehrere Fragen zu JToolBar AWT, Swing, JavaFX & SWT 2
N 2 Fragen (zu binärem Suchen und Scrollbar) AWT, Swing, JavaFX & SWT 6
B Einige Fragen zum GUI AWT, Swing, JavaFX & SWT 3
fLooojava GridLayout - Frage bezüglich Kachelgröße AWT, Swing, JavaFX & SWT 5
K kleine frage zum Spinner (bezüglich Action) AWT, Swing, JavaFX & SWT 2
F Zeichnen eines Baums: Unklarheiten bezüglich MVC AWT, Swing, JavaFX & SWT 5

Ähnliche Java Themen

Neue Themen


Oben