假设我对以下函数进行了几次调用:
public void StartTimedRuns(){
Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask(){
public void run(){
//do something that takes less than a minute
}
}, 0, 60*1000);
}
我的理解是此时会有一堆线程同时运行。也就是说,每个计时器实例将以 1 分钟的间隔产生短期线程。
假设我按照此处的说明安装了一个关闭挂钩(按 Control-C 时运行):
关闭挂钩将取消所有计时器。(假设我将计时器存储在类级集合中)
我能否保证在 VM 退出之前所有活动线程都将运行完成?
与此相关,关闭钩子是否仅在线程全部退出时才被调用?