new Timer(...).schedule(task)
task
是否保证在任何给定时间由单个线程运行?
答案 0 :(得分:7)
来自Javadoc
对应每个Timer对象是一个后台线程,用于按顺序执行所有计时器的任务。计时器任务应该快速完成。如果计时器任务花费过多时间来完成,它会“占用”计时器的任务执行线程。反过来,这可以延迟后续任务的执行,后续任务可以在紧急任务最终完成时(以及如果)快速连续地“聚集”并执行。
所以,是的,你得到一个新的线程(与调用者的线程分开)。该计时器中的每个任务都共享同一个线程。
答案 1 :(得分:2)
每个计时器有一个单独的线程,所以问题的答案是肯定的
答案 2 :(得分:0)
事实上。它们都按顺序对应于Timer对象的相同后台线程运行。但是我会在不同的线程上运行两个不同的Timer实例(我相信),因此您必须保存对计时器对象的引用,以便按顺序安排更多任务。