只是为了确定:
void java.util.Timer.schedule(TimerTask task, Date firstTime, long period)
如果我的任务比period
参数花费的时间更长,那么计时器不会启动一个新的并行线程,对吧?它等待任务完成并立即开始。
答案 0 :(得分:2)
你是对的。来自documentation:
对应每个Timer对象是一个后台线程 用于按顺序执行所有计时器的任务。计时器任务 应该快点完成。如果计时器任务需要过多的时间 完成,它"猪#34;计时器的任务执行线程。这可以,在 转,延迟后续任务的执行,这可能会导致后续任务的结束。 当(和如果)违规任务快速连续执行 终于完成了。
如果您希望自己的任务可能需要更长时间并且应该排队,我建议您使用ExecutorService。
答案 1 :(得分:1)
两件事,首先你应该使用ScheduledExecutorService或者像石英这样的调度程序来安排作业。关于您的问题,句点是连续任务执行之间的时间(以毫秒为单位)。
考虑一个示例,您已安排任务在上午10:00开始,延迟时间为10分钟。假设第一次执行需要10分钟才能完成,即上午10:10然后第二次执行将在上午10:20开始。