首先,Timer的工作原理就是这样,请注意Javadoc中关于Timer有这样一段话:Corresponding to each Timer object is a single background thread that is used to execute all of the timer's tasks, sequentially. Timer tasks should complete quickly. If a timer task takes excessive time to complete, it "hogs" the timer's task execution thread. This can, in turn, delay the execution of subsequent tasks, which may "bunch up" and execute in rapid succession when (and if) the offending task finally completes. 这里的意思很明显:每个Timer对应于一个后台线程,它依次执行所有的TimerTask,如果TimerTask没有完成的话,将会延迟其他TimerTask的执行。所以如果你想完全无序的执行你的这些TimerTask,就必须产生多个Timer对象来进行调度。Timer是不需要你关心它什么时候会中止的,Javadoc里面这样说的:After the last live reference to a Timer object goes away and all outstanding tasks have completed execution, the timer's task execution thread terminates gracefully (and becomes subject to garbage collection). However, this can take arbitrarily long to occur. By default, the task execution thread does not run as a daemon thread, so it is capable of keeping an application from terminating. If a caller wants to terminate a timer's task execution thread rapidly, the caller should invoke the the timer's cancel method.意思是说在所有Task执行完毕后,Timer对象会自动中止,并被作为垃圾回收(具体回收时间由系统决定,所以可能会等上很长的时间)。如果你要人为中止,可以调用cancel方法中断整个Timer对象的执行线程。建议以后碰到类似的问题,先去看看Java的帮助文档,也许就能从其中找到答案了。