Events schreiben, solange Programm läuft

garstig

Mitglied
Hallo!

Zum externen Monitoring meines Programms möchte ich gerne z.B. alle 5 Mins (mittels Windows Event) ausgeben ob mein Programm (in meinem Fall der Main thread) noch läuft. Ich habe schon gelesen, dass mit Thread.alive eben das abgefragt wird, aber wie kann ich allgemein vom Main-Thread diesen Status abfragen, denn es wird von diesem Thread noch ein KindThread erstellt, der während der Laufzeit sehr oft gestartet und beendet wird und der Main-Thread wartet auf eben diesen. Ich möchte nicht, dass mit (current)Thread.alive() unabsichtlich dieser KindThread abgefragt wird. Und vor allem, wie kann ich alle x Minuten etwas ausgeben (oder eventcreate ausführen)? Mit einem TimerTask?
Vielleicht mangelt es an meiner Suchanfrage, aber ich habe nur einen ForenThread hier gefunden, der ungefähr in diese Richtung geht, allerdings etwas exotischer für mich, da es in diesem um Prozesse und Clientverbindungen ging.

Lg
 

jstei001

Aktives Mitglied
Du kannst deine Main-Methode beginnen mit [c]Thread t = Thraed.currentThread()[/c] somit holst du dir als aller erstes bevor irgendwas anderes passiert eine Referenz auf den Main Thraed. Denn dieser wird ja als aller erstes gestartet.

Mit Thread.Alive kannste abfragen ob der Thread noch aktiv ist haste ja richtig erkannt. Das mit der Zeit geht auf viele Art und Weisen ein eifnacher Timer denke ich ist in deinem Fall am besten.

Java:
import javax.swing.Timer <---- Wichtig

Timer t = new Timer(ms, new ActionListener(){
 @Override
public void actionPerformed(ActionEvent event){
 //mach irgendwas im abstand von ms sekunden
}

}).start();

Musst aber mal schauen ich weiß jetzt nicht ob man innerhalb des Timers auf alles zugreifen kann. Probiers mal.
 

garstig

Mitglied
Hallo.

Das mit dem Thread, da hätt ich mich schon ein bisschen mehr anstrengen können, so offensichtlich wie das war. Danke hierfür.

Allerdings hab ich ein kleines Problem mit dem Timer. Ich hab zuerst eine Methode versucht die mit Thread.sleep(x zeit) in der Run Methode eines Kindthreads funktioniert. Hat aber nicht geklappt, denn das Programm war dann nur mehr noch in diesem Thread und hat gleichzeitig nicht an seiner eigentlichen Aufgabe weitergearbeitet. Das hätte ich eigentlich auch wissen können, denn ich hab ja in meinem Programm an einer anderen Stelle Threads eingebaut.
2. Methode war nicht ganz so anders, da habe ich deinen Swing Timer verwendet, diesen dann in den Konstruktor des KindThreads geschrieben..das selbe Problem wie bei Methode 1.

Meine Frage ist jetzt, wo bau ich diesen Timer ein?
Etwa so?
Java:
main-Methode{
		t = new Timer(2000, new ActionListener(){
			public void actionPerformed(ActionEvent event){
				Runtime systemShell = Runtime.getRuntime();
				while(main.isAlive()){
					mach dies und das
				}
			}
		});
		t.start();
		
		//eigentliches Programm

}

Is der Sinn von Threads nicht eigentlich, dass man mehrere Sachen gleichzeitig machen kann?

Edit: Und noch ein Fehler~ Der Swing Timer hat nicht alle 2 s = 2000 ms die Events geschrieben sondern an die 10x pro Sekunde..das liegt wohl an der Schleife...
 
Zuletzt bearbeitet:

jstei001

Aktives Mitglied
Das dein Timer 10x Pro Sekunde ausgelöst wird liegt daran das du wohl t.start() in einer Schleife aufrufst ,oder den ganzen Timer in einer Schleife, dadurch enstehen mehrere Timer die alle das selbe tun.

Deshalb wirkt es so als würde er 10x pro sekunde auslösen, eigentlich aber lösen 10 Timer pro sekunde einmal aus.

Also einmal itialisieren und einmal starten dann löst der das event alle x ms aus.

Thread.Sleep und ein Timer haben einen gravierenden Unterschied. Denn mit Thread.sleep hältst du den Thread an ein Timer tut das nicht.

Jetzt ist die Frage willst du nur eine Ausgabe des Programms haben? ODer willst du wirklich Threads anhalten und wieder Starten?
 

garstig

Mitglied
Es lag an einer Schleife innerhalb des Timers
Java:
while(main.isAlive()){
                    mach dies und das
                }

Löst den Timer einmal aus und bleibt in dieser Schleife. Hab ich mit if(main.isAlive()) ausgetauscht.

Ich will während das Programm seine eigentliche Aufgabe erfüllt, nebenher (also gleichzeitig) Events an den Windows Event Log schicken, alle x Minuten/Sekunden/Stunden, um zu schauen ob das Programm noch läuft oder irgendwie abgekackt ist.
 

jstei001

Aktives Mitglied
Dann machst du zwei Klassen die eine erbt von Thread und übergibst dieser eine referenz von dem main-thread (mt) und in der Run methode initialisierst du einen Timer der alle x Sekunden das Event abhängig vom Zustand des Threads sendet [c]if(mt.isAlive)....else....[/c] sendet. Die andere Klasse ist deine Main Klasse.

In der Main Klasse machst du dann sowas

Java:
public static void main(String[] args){
Thread mt = Thread.currentthread();
myTimerClass mtc = new mtc(mt);

mtc.start();

........



}
 

garstig

Mitglied
Vielen Dank!

Ich hab das ganze jetzt nur mit plus einer Klasse gemacht. Also mein eigentliches Programm und dann noch eine Klasse die von Thread erbt. Ich weiß nicht ob es schön ist aber ich hab den Timer im Konstruktor des Threads drinnen und habe in dieser noch eine Methode stopTimer().

Also nochmals vielen Dank für deine Hilfe, ich glaube dieser Swing Timer ist echt praktisch!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Ical4j - Lazy Loading von Events? Java Basics - Anfänger-Themen 2
D Events verarbeiten Java Basics - Anfänger-Themen 1
nonickatall Erste Schritte Events Dokumentation/Tutorial Java Basics - Anfänger-Themen 1
K die Source eines Events bei verschiedenen Quellen herausfinden Java Basics - Anfänger-Themen 1
M Best Practice Events für jeden, oder für die Allgemeinheit "registrieren"? Java Basics - Anfänger-Themen 5
O Wie Log4J - Ausgaben/Events auffangen?! Java Basics - Anfänger-Themen 3
Thallius Best Practice Events zwischen eigenen Klassen Java Basics - Anfänger-Themen 2
H [JAVA] NetBeans GUI Builder - Events Java Basics - Anfänger-Themen 10
G Erste Schritte Window Events in Java Java Basics - Anfänger-Themen 6
Y Events auslösen Java Basics - Anfänger-Themen 11
T fenster schliesen und mouse events in einer nicht abstrakten klasse Java Basics - Anfänger-Themen 6
S Dauer eines Events anhandUnterschied berechnen? Java Basics - Anfänger-Themen 3
Nicer Maus Events Java Basics - Anfänger-Themen 2
H Listener und Events entfernen Java Basics - Anfänger-Themen 2
R wieso Nullpoint und was mit Events ? Java Basics - Anfänger-Themen 14
F Reihenfolge in der Events abgearbeitet werden Java Basics - Anfänger-Themen 2
Luk10 Problem mit vielen Timer(-Events) Java Basics - Anfänger-Themen 17
B Events behandeln Java Basics - Anfänger-Themen 4
A Events werfen/feuern wenn bestimtm methode ausgeführt wird Java Basics - Anfänger-Themen 3
E import org.eclipse.swt.Events.PaintListener; Java Basics - Anfänger-Themen 1
M Urheber von Events ermitteln Java Basics - Anfänger-Themen 5
S Eigene Events werfen? Java Basics - Anfänger-Themen 6
G Events manuell aulösen Java Basics - Anfänger-Themen 3
C Listener und Events Java Basics - Anfänger-Themen 10
D Events nicht bei den jeweiligen Objekten? Java Basics - Anfänger-Themen 3
G PropertyChangeListener empfängt Events doppelt Java Basics - Anfänger-Themen 5
F Eigene Klasse für Events Java Basics - Anfänger-Themen 10
G Events Java Basics - Anfänger-Themen 8
S Keylistener-Events hochreichen Java Basics - Anfänger-Themen 4
H Problem mit Events bzw. Referenzen Java Basics - Anfänger-Themen 4
H Events Java Basics - Anfänger-Themen 5
G Loop blockt alle Events Java Basics - Anfänger-Themen 7
D Probleme mit key events Java Basics - Anfänger-Themen 6
S Events Java Basics - Anfänger-Themen 11
S MouseListener - Events auf Mouseklick Java Basics - Anfänger-Themen 14
D Events Java Basics - Anfänger-Themen 4
G Events Java Basics - Anfänger-Themen 2
E Events nicht an aufrufendes Objekt schicken Java Basics - Anfänger-Themen 23
R events . usw Java Basics - Anfänger-Themen 6
S winXP -> window-events Java Basics - Anfänger-Themen 2
D [Problem] Events Java Basics - Anfänger-Themen 3
P Gibt es einen anderen Weg um "{}" in IntelliJ zu schreiben? Java Basics - Anfänger-Themen 5
T code so schreiben das er von sich selber anpasst (code soll die anzahl aller bustaben bestimmen) Java Basics - Anfänger-Themen 16
M Daten aus errechneter Methode in Datenbank(SQLite) schreiben Java Basics - Anfänger-Themen 60
W Objekte einer ArrayList in txt-datei schreiben mit Paths? Java Basics - Anfänger-Themen 2
M Test auf Exceptions schreiben Java Basics - Anfänger-Themen 11
F Wie kann ich eine Funktion schreiben, die nur in bestimmten Fällen einen Wert zurückgibt? Java Basics - Anfänger-Themen 5
HolyFUT JSON String in Java Object schreiben - Anführungszeichen rauskriegen? Java Basics - Anfänger-Themen 17
java-starter Erste Schritte Mit While Schleifen Programme schreiben Java Basics - Anfänger-Themen 4
berserkerdq2 Wo ist der SInn, dass man den Stream, den ich zum Schreiben nutze, outputstream nenne? Java Basics - Anfänger-Themen 5
viktor1 Methoden Methode schreiben static void readText (String filename) {...} zu WordHistogramSample.java Java Basics - Anfänger-Themen 13
D JAVA Programm schreiben Java Basics - Anfänger-Themen 46
S In Datei schreiben in Java? Java Basics - Anfänger-Themen 1
J Dateien lesen und schreiben Java Basics - Anfänger-Themen 5
berserkerdq2 IO Streams logfile erstellen und Sachen schreiben wie? Java Basics - Anfänger-Themen 2
M Text in Datei schreiben Java Basics - Anfänger-Themen 9
berserkerdq2 Wie würde man einen regulären Ausdruck in Java schreiben, der prüft, dass zwei bestimtme Zahlen nicht nebeneinadner sind? Java Basics - Anfänger-Themen 3
S Bot schreiben Java Basics - Anfänger-Themen 1
J Kann ich mein Programm so schreiben? Java Basics - Anfänger-Themen 4
C Brauche Hilfe beim Schreiben eines Programmes :/ Java Basics - Anfänger-Themen 1
C Brauche Hilfe um ein Programm zu schreiben Java Basics - Anfänger-Themen 8
C XML Datei schreiben Java Basics - Anfänger-Themen 14
S Objekte von zwei klassen in zwei verschiedene Textdateien schreiben Java Basics - Anfänger-Themen 5
T Methode schreiben, die einem Array ein Stringelement hinzufügt, wenn dieses noch nicht enthalten ist. Java Basics - Anfänger-Themen 6
T Inhalt aus TextField in Attribut einer Instanz schreiben Java Basics - Anfänger-Themen 5
NeoLexx Datenströme Lesen und Schreiben einer Textdatei Java Basics - Anfänger-Themen 2
B Inputstream in file schreiben? Java Basics - Anfänger-Themen 23
L Test-Methoden schreiben Java Basics - Anfänger-Themen 13
L x und y Koordinaten in ein Array schreiben Java Basics - Anfänger-Themen 7
J Programm schreiben Java Basics - Anfänger-Themen 5
G In Datei schreiben Java Basics - Anfänger-Themen 1
B Werte aus einem Unterprogramm in ein Array schreiben Java Basics - Anfänger-Themen 2
J Methode zur Ausgabe eines Dreiecks aus Sternen schreiben? Java Basics - Anfänger-Themen 2
J Methode selber schreiben Java Basics - Anfänger-Themen 5
M Plateau Prgramm schreiben Java Basics - Anfänger-Themen 2
G Programm schreiben: Zahl (n) eingeben, 1+1/n+2/n+3/n+....+n/n Java Basics - Anfänger-Themen 8
J String in Datei schreiben Java Basics - Anfänger-Themen 4
L Kleine Hilfe beim Schreiben eines Programmes benötigt :D Java Basics - Anfänger-Themen 40
J Lesen und schreiben in eine Datei(Anfänger- Dateizugriffe) Java Basics - Anfänger-Themen 3
S JSON Datei schreiben und lesen Java Basics - Anfänger-Themen 3
W Einfachen, ein beliebiges Zeichen oft erkennenden Regex Parser selber schreiben - wie vorgehen? Java Basics - Anfänger-Themen 12
B CSS Klassen in eine Liste schreiben Java Basics - Anfänger-Themen 4
H projekt 1 code schöner schreiben. Java Basics - Anfänger-Themen 25
O findRoot Methode schreiben in einem Intervall Java Basics - Anfänger-Themen 31
O Erste Schritte Eigene charAt(i) Methode schreiben Java Basics - Anfänger-Themen 10
X Arrays untereinander schreiben Java Basics - Anfänger-Themen 4
K Probleme beim Programm schreiben - Lesen von Dateiinhalten -zaehlen von Wörtern/ Buchstaben Java Basics - Anfänger-Themen 4
A Erste Schritte Bitte helfen sie mir diese Programm zu schreiben Java Basics - Anfänger-Themen 12
L Input/Output Konsole in Farben schreiben Java Basics - Anfänger-Themen 4
P Strings in String Array schreiben Java Basics - Anfänger-Themen 13
Y kann jemand die Terme mit Zahlen schreiben ?? Java Basics - Anfänger-Themen 4
L Input/Output In Farben schreiben Java Basics - Anfänger-Themen 3
x-tshainge In gespeicherter Datei schreiben? Java Basics - Anfänger-Themen 7
F Schreibprogramm nur markierten Text in kursiv oder fett schreiben Java Basics - Anfänger-Themen 3
A JSON Lesen und Schreiben. Java Basics - Anfänger-Themen 3
L Eigene Exception schreiben bei zu langem Array Java Basics - Anfänger-Themen 10
karlmasutra Ausgabe in ein Array schreiben Java Basics - Anfänger-Themen 14
T Zufällige Matrix in neue Matrix schreiben Java Basics - Anfänger-Themen 6
F Mehrere Zeilen zu einer Zeile zusammenfügen und in eine Datei schreiben Java Basics - Anfänger-Themen 1
J Mit JSF Formular in Datenbank schreiben Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben