[Java] Thread-Ende melden.
[Java] Thread-Ende melden.
hi,
Gibt es in Java tatsächlich nichts vorgefertigtes um über ein Ende eines Threads informiert zu werden? Ich habe das so gelöst, dass die Thread-Verwaltungsklasse einen zusätzlichen Thread startet, der immer durchläuft und prüft ob ein Thread aus der Liste nicht mehr arbeitet um dann einen gemappten Actionslisterner zu starten.
Ich mein es funktioniert. Doch:
1.) wundert es mich, dass es von Java noch nichts eigenes hat.
2.) Denke ich zu verquer und es gibt eine elegantere Lösung?
Gruß,
Björn
Gibt es in Java tatsächlich nichts vorgefertigtes um über ein Ende eines Threads informiert zu werden? Ich habe das so gelöst, dass die Thread-Verwaltungsklasse einen zusätzlichen Thread startet, der immer durchläuft und prüft ob ein Thread aus der Liste nicht mehr arbeitet um dann einen gemappten Actionslisterner zu starten.
Ich mein es funktioniert. Doch:
1.) wundert es mich, dass es von Java noch nichts eigenes hat.
2.) Denke ich zu verquer und es gibt eine elegantere Lösung?
Gruß,
Björn
- Artificial Mind
- Establishment
- Beiträge: 802
- Registriert: 17.12.2007, 17:51
- Wohnort: Aachen
Re: [Java] Thread-Ende melden.
Moin,
wenn du in der Verwaltungsklasse auch neue Threads startest, dann könntest du ja quasi eine Startfunktion um die eigentliche Threadfunktion legen, die in einem try { ... } finally Block die eigentliche Routine aufruft und im finally die gewünschte Action ausführt.
wenn du in der Verwaltungsklasse auch neue Threads startest, dann könntest du ja quasi eine Startfunktion um die eigentliche Threadfunktion legen, die in einem try { ... } finally Block die eigentliche Routine aufruft und im finally die gewünschte Action ausführt.
Re: [Java] Thread-Ende melden.
Hi,
also quasi isAlive() ignorieren und nach der Arbeit den actionPerformed aufruft. Ginge grundsätzlich, aber da bin ich korrinterkacker: der Thread ist dann nicht wirklich beendet.
Gruß,
Björn
also quasi isAlive() ignorieren und nach der Arbeit den actionPerformed aufruft. Ginge grundsätzlich, aber da bin ich korrinterkacker: der Thread ist dann nicht wirklich beendet.
Gruß,
Björn
- Artificial Mind
- Establishment
- Beiträge: 802
- Registriert: 17.12.2007, 17:51
- Wohnort: Aachen
Re: [Java] Thread-Ende melden.
Moin,
die Frage ist auch, in welchem Kontext/Thread soll actionPerformed aufgerufen werden?
die Frage ist auch, in welchem Kontext/Thread soll actionPerformed aufgerufen werden?
Re: [Java] Thread-Ende melden.
hi,
ich übergebe der WächterKlasse zu jeder Aufgabe einen eigenen ActionListener. Dieser Wird aufgerufen, sobald ein Thread beendet ist. Das praktische an den Listener ist, ich kann sowohl Instanzen, welche von "object" erben, übergeben, als auch Strings.
Gruß,
Björn
ich übergebe der WächterKlasse zu jeder Aufgabe einen eigenen ActionListener. Dieser Wird aufgerufen, sobald ein Thread beendet ist. Das praktische an den Listener ist, ich kann sowohl Instanzen, welche von "object" erben, übergeben, als auch Strings.
Gruß,
Björn
- Artificial Mind
- Establishment
- Beiträge: 802
- Registriert: 17.12.2007, 17:51
- Wohnort: Aachen
Re: [Java] Thread-Ende melden.
Moin,
meine Frage zielte darauf ab, in welchem Thread der ActionListener aufgerufen werden soll. Da gibt es ja durchaus Unterschiede in der Synchronisierung.
So wie ich das sehe hast du 3 offensichtliche Möglichkeiten:
1. Der Actionlistener wird in dem Thread aufgerufen, dessen Beendigung er anzeigen soll (das war mein erster Vorschlag)
2. Der Actionlistener wird in einem zusätzlichen Thread aufgerufen (dies war deine Lösung)
3. Der Actionlistener wird im GUI-Thread aufgerufen (hat auch seine Vorteile)
Die Möglichkeiten sind geordnet nach Synchronisierungsaufwand (von viel nach wenig) und der Reaktionszeit (von schnell nach langsam)
meine Frage zielte darauf ab, in welchem Thread der ActionListener aufgerufen werden soll. Da gibt es ja durchaus Unterschiede in der Synchronisierung.
So wie ich das sehe hast du 3 offensichtliche Möglichkeiten:
1. Der Actionlistener wird in dem Thread aufgerufen, dessen Beendigung er anzeigen soll (das war mein erster Vorschlag)
2. Der Actionlistener wird in einem zusätzlichen Thread aufgerufen (dies war deine Lösung)
3. Der Actionlistener wird im GUI-Thread aufgerufen (hat auch seine Vorteile)
Die Möglichkeiten sind geordnet nach Synchronisierungsaufwand (von viel nach wenig) und der Reaktionszeit (von schnell nach langsam)
Re: [Java] Thread-Ende melden.
hi,
so jetzt bin ich wieder etwas fitter.
Ok, ich wollte lediglich wissen, ob ich das Rad neu erfand oder es zumindest eine von möglichen Designs ist. Meine Anwendungs ist nicht so Zeit relevant, dass ich mir den Kopf um ein paar Millisekunden machen muss. Die Threads brauche ich nur um die GUI bedienungsfähig zu halten.
Danke dir.
Gruß,
Björn
so jetzt bin ich wieder etwas fitter.
Ok, ich wollte lediglich wissen, ob ich das Rad neu erfand oder es zumindest eine von möglichen Designs ist. Meine Anwendungs ist nicht so Zeit relevant, dass ich mir den Kopf um ein paar Millisekunden machen muss. Die Threads brauche ich nur um die GUI bedienungsfähig zu halten.
Danke dir.
Gruß,
Björn
- Chromanoid
- Moderator
- Beiträge: 4273
- Registriert: 16.10.2002, 19:39
- Echter Name: Christian Kulenkampff
- Wohnort: Lüneburg
Re: [Java] Thread-Ende melden.
Nimm nen ExecutorService und nutze die Futures. Die haben eine isDone Funktion. Der ExecutorService hat außerdem eine isTerminated-Funktion... edit: hab überlesen, dass du informiert werden willst. Es gibt verschiedene libs, die sowas nachliefern. Allerdings würde ich eher versuchen ohne sowas auszukommen.