2017-09-12 41 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。如果没有更多的参考资料,旧的将最终收集垃圾。