比如我们在活动结束后自动汇总生成效果数据、导出Excel表并将文件通过邮件推送到用户手上,再比如微信运动每天都会在十点后向你推送个位数的微信步数。...)方法,要么是在run()方法中抛出向上传播的异常
所有的Timer在创建后都会创建关联的工作线程,这个关联的工作线程默认是非守护线程的,所以很明显我们满足第二个条件,所以程序会继续执行而不会退出。...程序执行时间为: 1,614,578,037,976
程序结束时间为: 1,614,578,037,996
可以看到我们的延迟任务还没有开始执行,程序就已经结束了,因为在我们的主线程退出后,所有的非守护线程都结束了...向Timer中添加多个任务
接下来我们将分别向Timer中添加两个延迟任务,为了更容易地控制两个任务的调度顺序和时间,我们让第一个任务延迟5秒,第二个任务延迟10秒,同时让第一个任务阻塞10秒后再结束,...程序执行时间为: 1,614,612,436,037
程序结束时间为: 1,614,612,436,061
可以看到,在执行Timer对象的cancel()方法后,Timer的工作线程也随之结束,程序正常退出