我对Java 6中ScheduledExecutorService上的scheduleAtFixedRate()方法有疑问。

[编辑:1.6版的Javadoc比1.5版的Javadoc更完整。见下面的评论]

鉴于:

  • ScheduledExecutorService是使用
  • 池中的N = 1个线程构造的
  • 固定汇率为T秒的周期
  • 无初始延迟

  • 在这种情况下会发生什么(在实时意义上,时间并不是绝对的):
  • 在时间T,服务启动可运行任务“task1”
  • 在时间2T的
  • ,task1尚未完成,并且服务计划启动

  • 服务是否保证可以进行以下任何操作?
  • (a)在2T时启动可运行任务“task2”(调用N = 1)
  • (b)块,直到task1完成
  • (c)这次跳过,然后在3T上重试
  • (d)行为未定义

  • 或者是其他东西?如果N> 1,答案是否会改变?

    最佳答案

    答案是



    这与执行程序的线程数无关(task2甚至可能不会提交)。

    医生说:



    (顺便说一句,由于没有初始延迟,“task1”将在文档编辑后立即启动:



    )。

    10-04 12:54