java计时器计划任务

lgp*_*lgp 5 java timer

在下列情况下会发生什么?

Timer t = new Timer();
t.schedule(...);
t = new Timer();
Run Code Online (Sandbox Code Playgroud)

具体来说,在我将一个新的Timer实例分配给t之后,我在Timer t上安排的任务会发生什么?

tsk*_*zzy 7

它们不会消失.每个Timer对象都与后台进程相关联.即使您删除了Timer程序中对您的所有引用,后台进程仍将继续运行(它拥有自己对该对象的引用).因此,该对象不会被垃圾回收.

有关详细信息,请参阅官方文档

对应于每个Timer对象的是一个后台线程,用于执行所有计时器的任务,顺序...在最后一次对Timer对象的实时引用消失并且所有未完成的任务都已完成执行后,计时器的任务执行线程终止优雅(并成为垃圾收集).但是,这可能会发生任意长的时间.