Java的Timer任务是否保证不会同时运行?

new Timer(...).schedule(task) 

task保证在任何给定时间由单个线程运行吗?

来自Javadoc

对应于每个Timer对象的是一个后台线程,用于按顺序执行所有计时器的任务。 计时器任务应该快速完成。 如果计时器任务需要花费过多的时间来完成,它会“占用”计时器的任务执行线程。 反过来,这可以延迟后续任务的执行,后续任务可以在紧急任务最终完成时(以及如果)快速连续地“聚集”并执行。

所以,是的,你得到一个新的线程(与调用者的线程分开)。 该计时器中的每个任务共享同一个线程。

每个Timer有一个单独的线程,所以你的问题的答案是肯定的

确实。 它们都按顺序运行在与Timer对象相对应的相同后台线程上。 但是两个不同的Timer实例将在不同的线程上运行(我相信),因此您必须保存对计时器对象的引用,以便按顺序安排更多任务。