假设我有一个当前正在运行的Timer,它带有一个预定的TimerTask。如果我调用timer.cancel()
确实会杀死我的TimerTask中的所有变量,或者我是否必须等待GC?此外,我可以在致电.cancel()
timer.cancel();
timer = new Timer();
messageTimer = new MessageTask();
timer.schedule(messageTimer, 1000, 1000);
或者是否有更合适的方法来替换原始计时器对象中的计时器任务,或者我甚至没有想到的东西?
谢谢-T
答案 0 :(得分:1)
在Java中,内存仅通过GC回收 ,但作为开发人员,一旦你没有更多的引用,你的变量就没用了(并准备好进行垃圾回收)。
在您的示例中,您通过使用=重新分配来创建新的Timer。如果没有更多的引用,旧的引用最终将被垃圾收集。