Java, warte nicht auf den Abschluss eines Threads

7

Ich muss einen Weg finden, einen Thread von einem statischen Aufruf abzutrennen und nicht auf den Thread zu warten. Grundsätzlich ein "Feuer und Vergessen" -Ansatz. Kann mir jemand ein einfaches Beispiel geben, wie dies erreicht werden kann?

    
JediPotPie 19.05.2009, 14:58
quelle

5 Antworten

26
%Vor%     
PaulJWilliams 19.05.2009, 15:00
quelle
8

Wenn es sich um einen langlebigen Thread handelt, der einen ähnlichen Lebenszyklus wie Ihre App selbst hat und viel Zeit damit verbringen wird, auf andere Threads zu warten:

%Vor%

Wenn es sich um eine kurzlebige, CPU-gebundene Aufgabe handelt:

%Vor%

In den meisten Fällen werden Sie jedoch eine Reihe von Aufgaben an dasselbe ExecutorService senden.

Siehe:

Adam Jaskiewicz 19.05.2009 15:55
quelle
7
%Vor%     
Steve B. 19.05.2009 15:01
quelle
5

Abhängig von der Art Ihrer Aufgabe, können verschiedene Wege möglich sein:

(1) Wie viele bereits erwähnt haben, ist es für eine gelegentliche Aufgabe üblich, einfach einen -Thread zu konstruieren und seine start () -Methode aufzurufen.

(2) Denken Sie daran, dass, wenn Ihr Hintergrund-Thread nicht aufhört, standardmäßig verhindert, dass Ihr Programm heruntergefahren wird, wenn andere Threads beendet sind. Sie möchten daher möglicherweise setDaemon (true) im Thread aufrufen, damit dieses Verhalten nicht auftritt. (Bei Anwendungen auf der Basis von GUI endet der Aufruf von System.exit () jedoch in der Regel am Ende, und im Idealfall würden Sie in Ihre langwierige Aufgabe einen sauberen Weg zum Herunterfahren einfügen .)

(3) Wenn Sie häufig kurzlebige Aufgaben zum "feuern und vergessen" haben, sollten Sie die Executors-Framework ab Java 5 verfügbar.

    
Neil Coffey 19.05.2009 16:24
quelle
2

starte im Grunde den Thread und führe keinen Join aus. Du wirst also nicht darauf warten, dass der Thread endet.

    
Shamik 19.05.2009 15:05
quelle

Tags und Links