Hintergrundprozesse in Java realisieren

Fahrradfahrer

Banned
Registriert
Mai 2020
Beiträge
50
Hallo ihr Lieben!

Ich bin noch kein wirklich guter Programmierer, möchte ich vorab sagen.

Ich möchte eine Anwendung schreiben, die es einem ermöglicht Erinnerungstexte mit Zeitwunsch zu erzeugen, und der PC soll dann den Benutzer an ein jeweiliges Ereignis erinnern, sobald es angebrochen ist.

Diese Anwendung soll aus zwei Teilen bestehen:

Eine GUI, bei der man Datum und Uhrzeit sowie eine Textnachricht eintragen kann, und
Ein Hintergrundprozess, der beim Systemstart immer automatisch angeschaltet wird und sofern Ereignisse angebrochen sind, eine kleine MessageBox öffnet, oder etwas dergestalt.

Was ist in Java der Königsweg, um einen Hintergrundprozess ohne Ausgabe zu erstellen?

Antworten auf Google widersprechen sich. Die einen sagen, man braucht irgendwelche Bibliotheken (Java service wrapper), andere sagen, man muss Thread-Klassen benutzen, wieder andere sagen, man solle einfach den Code schreiben, und dann wird das schon irgendwie.
 
Fahrradfahrer schrieb:
Was ist in Java der Königsweg, um einen Hintergrundprozess ohne Ausgabe zu erstellen?
Einen Java Thread starten und gut ist. Wenn du eine Swing GUI erstellst solltest du dir eh noch was ueber den Event Dispatcher Thread kruz durchlesen, aber insgesamt klingt deine Anforderung nach ein paar Zeilen Code.
Kannst natuerlich auch JavaFX nehmen, wenn dir Swing zu altbacken aussieht
 
Richtig. Die Klasse Thread und das Interface Runnable machen die Magic ;)
 
  • Gefällt mir
Reaktionen: ona993
Noch einfacher (und genauer) geht's mit Timern. Einen extra Thread brauchst du nur, wenn dein Programm weiterlaufen soll wenn man die GUI schließt.
 
Whut @Darlis? Ein Thread benötige ich dann wenn ich einen lang laufenden Prozess habe, der nicht durch den UI-Thread erledigt werden kann, da dann das UI blockiert. Das passiert mit lang laufenden Timern übrigens auch, da diese per Default im Kontext des UI-Threads ausgeführt werden...

Und wenn der Elternthread (UI-Thread) beendet wird, sollte man der Ordnung und Sauberkeit wegen soweit aufräumen dass alle Abhängigkeiten, unter anderem auch die Childthreads des UI-Threads, ebenfalls beendet und disposed werden.
 
Zuletzt bearbeitet von einem Moderator:
rlchampion schrieb:
Ein Thread benötige ich dann wenn ich einen lang laufenden Prozess habe, der nicht durch den UI-Thread erledigt werden kann, da dann das UI blockiert. Das passiert mit lang laufenden Timern übrigens auch, da diese per Default im Kontext des UI-Threads ausgeführt werden...
Dann hast du mich falsch verstanden. Ich kann in dem UI per Klick einen 5-Minuten-Timer starten lassen und dann idled der UI-Thread vor sich hin, bis der nach 5 Minuten wieder durch den abgelaufenen Timer aktiv wird (und z.B. eine Notiz anzeigt). Genau dafür sind Timer da.
Ich meinte damit nicht, dass ich einen Timer starten würde, der dann ein Thread.sleep(5000*60) macht. Das wäre sinnfrei.
 
Fahrradfahrer schrieb:
Was ist in Java der Königsweg, um einen Hintergrundprozess ohne Ausgabe zu erstellen?

Java selbst bietet dafür keine speziellen Möglichkeiten. Je nachdem, was man vor hat, kann man einfach ein Java Programm schreiben, das man mit den Bordmitteln des Betriebssystems automatisch startet oder man verwendet eine Bibiliothek eines Drittanbieters, um einen Service zu implementieren.


Fahrradfahrer schrieb:
Antworten auf Google widersprechen sich. Die einen sagen, man braucht irgendwelche Bibliotheken (Java service wrapper), andere sagen, man muss Thread-Klassen benutzen, wieder andere sagen, man solle einfach den Code schreiben, und dann wird das schon irgendwie.

Man kann auch bei Verwendung eines Service Wrappers Threads nutzen (wobei man Threads direkt mittlerweile eher weniger einsetzt, hier böte sich ein ScheduledExecutorService an oder Timer). Geht aber wie gesagt grundsätzlich auch ohne Wrapper. Kommt auf die Anforderungen an.
 
  • Gefällt mir
Reaktionen: Fahrradfahrer
Zurück
Oben