Java 执行后TimerTask会发生什么情况?

Java 执行后TimerTask会发生什么情况?,java,timer,scheduled-tasks,Java,Timer,Scheduled Tasks,在执行其run方法后,扩展TimerTask的类会发生什么情况?myTask的值是null还是执行后的值 MyTask myTask = new MyTask(); 没什么。您可以查看该类的源代码,以了解在调度TimerTask时,引擎盖下到底发生了什么。什么都没有。您可以检查该类的源代码,以了解在调度TimerTask时,该类的实际情况。如果您从一个已结束的方法启动它(并且没有在任何地方引用它,例如在仍然活动的对象的成员变量中),它将被垃圾收集器清除 除非任务保留对大量内存的引用,否则无需将

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

MyTask myTask = new MyTask();

没什么。您可以查看该类的源代码,以了解在调度
TimerTask
时,引擎盖下到底发生了什么。

什么都没有。您可以检查该类的源代码,以了解在调度
TimerTask
时,该类的实际情况。

如果您从一个已结束的方法启动它(并且没有在任何地方引用它,例如在仍然活动的对象的成员变量中),它将被垃圾收集器清除

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


如果确实需要取消引用该任务,则应在其run()方法的末尾添加一个调用,以便从引用该任务的任何位置放弃该任务。

如果从已结束的方法启动该任务(并且没有在任何位置引用它,例如,在仍处于活动状态的对象的成员变量中)垃圾收集器将对其进行清理

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


如果确实需要取消引用该任务,则应在其run()方法的末尾添加一个调用,以便从引用该任务的任何位置放弃该任务。

执行后如何将其设置为null?不要担心,GC最终将释放该任务占用的资源,当它不再需要时。我如何在执行后将其设置为null?不用担心,GC最终会在不再需要时释放它所占用的资源。好的,我需要按间隔运行此任务,但我发现我可以使用public void schedule将任务设置为按间隔自动运行(TimerTask task,long delay,long period)我以为您一直在使用
计划
,这就是为什么我建议您阅读
计时器
源代码。好的,我需要每隔一段时间运行此任务,但我发现我可以使用public void schedule(TimerTask task,long delay,long period)将任务设置为每隔一段时间自动运行(TimerTask task,long delay,long period)我以为你一直在使用
时间表
,所以我建议你阅读
计时器
源代码。