关于Java中的Timer和Timer任务

时间:2017-09-12 03:24:16

标签: java

假设我有一个当前正在运行的Timer,它带有一个预定的TimerTask。如果我调用timer.cancel()确实会杀死我的TimerTask中的所有变量,或者我是否必须等待GC?此外,我可以在致电.cancel()

后将其重新分配给新任务
timer.cancel();
timer = new Timer();
messageTimer = new MessageTask();
timer.schedule(messageTimer, 1000, 1000);

或者是否有更合适的方法来替换原始计时器对象中的计时器任务,或者我甚至没有想到的东西?

谢谢-T

1 个答案:

答案 0 :(得分:1)

在Java中,内存仅通过GC回收 ,但作为开发人员,一旦你没有更多的引用,你的变量就没用了(并准备好进行垃圾回收)。

在您的示例中,您通过使用=重新分配来创建新的Timer。如果没有更多的引用,旧的引用最终将被垃圾收集。

相关问题