是Java定时器任务保证不会同时运行?(Is Java's Timer task guara

2019-07-31 12:45发布

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

task保证由一个线程在任何时候运行?

Answer 1:

从的Javadoc

对应于每个Timer对象是用于执行所有的计时器的任务,按顺序一个后台线程。 计时器任务应该迅速完成。 如果计时器任务花费过多的时间来完成,这“猪”计时器的任务执行线程。 这可以反过来,延迟后续任务的执行,这可能“堆在一起”,并连续快速执行的时候(如果)有问题的任务最终完成。

所以,是的,你会得到一个新的线程(从调用者线程分开)。 在计时器每一项任务共享相同的线程。



Answer 2:

有每个定时器的一个线程,所以回答你的问题是肯定的



Answer 3:

确实。 他们都在同一个后台线程运行对应序列中的Timer对象。 但有两个不同的定时器实例将在不同的线程上运行(我相信),所以你要参考保存到一个Timer对象sequentialy安排更多的任务。



文章来源: Is Java's Timer task guaranteed not to run concurrently?