Sie brauchen keine bestimmte Aufräumarbeiten, es sei denn, Sie haben offene Systemressourcen Likes-Dateien. Sobald Threads beendet werden, egal ob normal oder außergewöhnlich, werden sie vom Betriebssystem oder der VM (Thread-Stack, ...) bereinigt.
Die Objekte Thread
selbst werden vom normalen Java-GC zurückgewonnen. Im Allgemeinen führt GC eine Sammlung durch, wenn der Arbeitsspeicher knapp wird. Es ist jedoch nicht deterministisch.
Um verbessern die Speichereffizienz im Allgemeinen, könnten Sie Refactoring Threads in Aufgaben betrachten und einen Thread-Pool, die rund ein Megabyte (grobe Figur!) Rasiert off pro Thema:
- Eine Implementierung von
ExecutorService
Führt Aufgaben für Threads aus. Wenn Sie hauptsächlich CPU-Arbeit und nicht I/O betreiben, ist es im Allgemeinen sinnvoll, so viele Threads wie Kerne als Hunderte von Threads zu verwenden. Es gibt vorhandene Implementierungen, Sie können jedoch auch einen eigenen Executor-Service implementieren.
- Ein
Callable<T>
ist eine Task-Implementierung. Vielleicht ziemlich ähnlich zu dem, was Sie möglicherweise nicht mit Runnable
Objekte tun.
- Eine
Future<T>
hält ein Versprechen für ein Task-Ergebnis.
Danke für die saubere Antwort :) – sura2k