【问题标题】:What happens to TimerTask after execution?TimerTask 执行后会发生什么?
【发布时间】:2010-11-28 02:29:15
【问题描述】:

在执行 run 方法后扩展 TimerTask 的类会发生什么? myTask 的值是 null 还是执行后的值?

MyTask myTask = new MyTask();

【问题讨论】:

    标签: java timer scheduled-tasks


    【解决方案1】:

    什么都没有。您可以查看Timer 类的源代码,以了解安排TimerTask 时实际发生的情况。

    【讨论】:

    • 执行后如何设置为null?
    • 别担心,GC最终会释放它占用的资源,当它不再需要时。
    【解决方案2】:

    如果你从一个已经结束的方法开始它(并且没有在任何地方引用它,例如在一个仍然存在的对象的成员变量中)它将被垃圾收集器清理。

    除非任务保持对大量内存的引用,否则无需将其设置为 null。

    如果您真的需要取消对 Task 的引用,您应该在其 run() 方法的末尾添加一个调用,以便从您引用它的任何地方丢弃它。

    【讨论】:

    • 好的,我需要间隔运行这个任务,但是我发现我可以使用public void schedule(TimerTask task, long delay, long period)将任务设置为间隔自动运行
    • 我以为你一直在使用schedule,所以我建议你阅读Timer 源代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-18
    • 2016-09-17
    • 1970-01-01
    • 2014-10-26
    • 1970-01-01
    • 2013-02-18
    • 1970-01-01
    相关资源
    最近更新 更多