2017-09-12 3 views
0

Angenommen, ich habe einen laufenden Timer mit einer geplanten TimerTask. Wenn ich timer.cancel()aufrufe, tötet das auch alle Variablen in meiner TimerTask, oder muss ich auf den GC warten? Außerdem kann ich es mit einer neuen Aufgabe zuweisen nach .cancel()Über Timer und Timer Task in Java

timer.cancel(); 
timer = new Timer(); 
messageTimer = new MessageTask(); 
timer.schedule(messageTimer, 1000, 1000); 

Aufruf oder gibt es einen geeigneteren Weg, um den Timer-Task in dem ursprünglichen Timer-Objekt zu ersetzen, oder etwas, das ich nicht einmal denke an?

Dank

+0

@EvanM Vielen Dank! Habe das vergessen. – TJBlack31

Antwort

1

In Java -T, ist Speicher nur über GC zurückgewonnen, sondern als Entwickler, sind Ihre Variablen nutzlos (und bereit für die Garbage Collection), wenn Sie keine Verweise auf sie haben.

In Ihrem Beispiel erstellen Sie einen neuen Timer, indem Sie ihn mit = neu zuweisen. Wenn es keine Referenzen mehr gibt, wird der alte irgendwann Müll sammeln.