Was sollte mit einem Thread getan werden, nachdem die run()
Methode ausgeführt wurde? Ist für einen Thread in Java eine Bereinigung erforderlich?Wie säubere ich einen Thread, nachdem seine Ausführungsmethode beendet wurde?
Antwort
Sofern die Arbeit des Threads einige nicht verwaltete Ressourcen (Netzwerkströme, Dateien usw.) verwendet hat - in diesem Fall es sollte nach sich aufräumen - es gibt nichts, was Sie tun müssen.
Beachten Sie, dass das Speichern eines Verweises auf das Objekt Thread
, das den Thread darstellt, den zugrunde liegenden Betriebssystem-Thread nicht am Leben erhält.
Sie brauchen nicht zu, Thread beendet, sobald run
Verfahren beendet ist es die Ausführung
NOPES. Der Thread würde eigenständig ausführen und sterben und Müll sammeln.
Nein, es ist nicht notwendig. Wenn der Thread seine Run-Methode beendet, gelangt der Thread selbst in den Ausgangszustand.
Im Allgemeinen erfolgt die Bereinigung durch den Garbage Collector. Wenn die Threads Dateien/Sockets verwenden, müssen Sie sie möglicherweise schließen. Die beste Vorgehensweise besteht darin, Ressourcen im obersten finally
-Block in Thread::run
zu schließen.
Eigentlich müssen Sie Ihre Daten aufräumen, und nicht den Thread.
- 1. Wie aktiviert man die Formularschaltfläche, nachdem der Prozess beendet wurde?
- 2. C# -Aufnahmemethode, nachdem die Browsersteuerung beendet wurde?
- 3. Wie funktioniert das Betriebssystem, wenn ein Thread beendet wurde?
- 4. Wie man einen Std :: Thread beendet?
- 5. Wiederherstellungsstatus, nachdem der Prozess beendet wurde
- 6. Wie säubere ich PyOpenAL richtig?
- 7. Wie wird die Verarbeitung fortgesetzt, nachdem die Animation beendet wurde?
- 8. WPF: Zurückgeben einer Methode, nachdem eine Animation beendet wurde
- 9. Wie wird eine Java-Anwendung ordnungsgemäß beendet, die beendet wird, nachdem die Befehlszeile geschlossen wurde, von der sie ausgeführt wurde?
- 10. Wie setze ich die zustandsbehaftete Komponente zurück, nachdem AJAX beendet wurde?
- 11. Starten Sie die zweite Methode, nachdem die erste Methode mit Thread-Funktionalität beendet wurde C#
- 12. Senden von lokalen Benachrichtigungen, nachdem die App beendet wurde
- 13. Wie rufen Sie einen CKEditor-Dialog auf, nachdem ein anderer beendet wurde?
- 14. Facebook-Zugriff behalten, nachdem die App beendet wurde iOS Swift
- 15. Neustart der Android-Anwendung, nachdem der Prozess beendet wurde
- 16. Zurück zum Startbildschirm, nachdem die Aktivität beendet wurde.
- 17. Der Browser lädt weiter, nachdem die Ajax-Anfrage beendet wurde.
- 18. Verlassen eines Bildschirms, nachdem ein Skript beendet wurde
- 19. Objective-C und Speicherlecks, nachdem ein Programm beendet wurde?
- 20. Wie wurde mein Prozess beendet?
- 21. Entfernt Files.createTempDirectory das Verzeichnis, nachdem JVM normal beendet wurde?
- 22. Wie kann ich den Stack-Trace sehen, nachdem der Prozess beendet wurde?
- 23. Wie kann ich eine Anweisung ausführen, nachdem eine Schleife in Javascript beendet wurde?
- 24. Tomcat 6: Wie lösche ich temporäre Dateien, nachdem ein Web-Methoden-Aufruf beendet wurde?
- 25. Wie kann ich eine Funktion parallel ausführen und nachdem das Hauptprogramm beendet wurde, läuft er weiter?
- 26. Garn-Anwendung wird nicht beendet, selbst nachdem Application Master beendet wurde
- 27. Python: Wie man einen Thread beendet, wenn Hauptprogramm endet
- 28. Wie man einen hängenden Thread innerhalb einer DLL korrekt beendet?
- 29. Wie kann ich Anrufprotokolle lesen, nachdem der Anruf beendet und in den Protokollen gespeichert wurde?
- 30. Wie starte ich eine Ajax-Anfrage, nachdem der vorherige beendet wurde?
Auch erwähnenswert, dass ein Thread-Objekt nicht immer ein OS-Thread darstellt, genau wie ein File-Objekt nicht immer eine "echte" Datei darstellt. –
Der Thread erstellt dynamisch Klassen und lädt sie .... schließlich würde der ClassLoader keinen Speicher mehr haben? Wenn ja, wie säubern wir das? – Stackee007
@ Stackee007: Sie müssen einen separaten ClassLoader speziell dafür erstellen und zulassen, dass er (und alle Klassen, die er erstellt wurde) als Garbage Collection erfasst wird. Ich sehe jedoch nicht, wie das für die ursprüngliche Frage besonders relevant ist. –