【发布时间】:2010-11-28 02:29:15
【问题描述】:
在执行 run 方法后扩展 TimerTask 的类会发生什么? myTask 的值是 null 还是执行后的值?
MyTask myTask = new MyTask();
【问题讨论】:
标签: java timer scheduled-tasks
在执行 run 方法后扩展 TimerTask 的类会发生什么? myTask 的值是 null 还是执行后的值?
MyTask myTask = new MyTask();
【问题讨论】:
标签: java timer scheduled-tasks
什么都没有。您可以查看Timer 类的源代码,以了解安排TimerTask 时实际发生的情况。
【讨论】:
如果你从一个已经结束的方法开始它(并且没有在任何地方引用它,例如在一个仍然存在的对象的成员变量中)它将被垃圾收集器清理。
除非任务保持对大量内存的引用,否则无需将其设置为 null。
如果您真的需要取消对 Task 的引用,您应该在其 run() 方法的末尾添加一个调用,以便从您引用它的任何地方丢弃它。
【讨论】:
schedule,所以我建议你阅读Timer 源代码。