2010-11-26 14 views

Antwort

30

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.

+5

Auch erwähnenswert, dass ein Thread-Objekt nicht immer ein OS-Thread darstellt, genau wie ein File-Objekt nicht immer eine "echte" Datei darstellt. –

+0

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

+0

@ 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. –

10

Sie brauchen nicht zu, Thread beendet, sobald run Verfahren beendet ist es die Ausführung

2

NOPES. Der Thread würde eigenständig ausführen und sterben und Müll sammeln.

2

Nein, es ist nicht notwendig. Wenn der Thread seine Run-Methode beendet, gelangt der Thread selbst in den Ausgangszustand.

8

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.

Verwandte Themen