2017-09-12 47 views
0

比方說,我有一個當前正在運行的計時器與計劃的TimerTask。如果我打電話timer.cancel()是否也會殺死我的TimerTask中的所有變量,或者是否必須等待GC?另外,我可以打電話.cancel()關於Java中的計時器和計時器任務

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

還是有替換原來的計時器對象的計時器任務,或者什麼我還沒想到更合適的方式後,用新的任務重新分配呢?

感謝-T

+0

@EvanM謝謝!忘了那個。 – TJBlack31

回答

1

在Java中,內存是只有通過GC回收,但作爲一個開發者,你的變量是無用的(並準備進行垃圾回收)一旦你對他們沒有更多的引用。

在你的例子中,你正在用=重新分配它來創建一個新的Timer。如果沒有更多的參考資料,舊的將最終收集垃圾。