问答详情
源自:3-1 timer定时函数的用法

方法区别?

schedule已经涵盖了scheduleAtFixedRate的两个方法,那schedule和scheduleAtFixedRate相同的两个方法功能相同,区别是什么呢

提问者:慕粉2248088296 2018-04-09 20:04

个回答

  • 不爱吃泡饭
    2018-04-10 11:09:37

    1. 实际执行语句的时间 晚于 设置的timer开始时间:scheduleAtFixedRate会补上应该执行的次数(以连续执行的方式,在实际上第一次执行的时候),schedule错过了的次数不补。

    2. 如果任务的耗时超过设置的时间间隔:scheduleAtFixedRate会严格按照时间点执行(于是任务并行执行着),而schedule 上一个任务什么时候完成什么时候执行下一个任务(延迟,串行执行)

    3. 好吧,我知道你没看懂,我写的我也看不懂,举例子:

      第一个区别:  ScheduleAtFixedRate同学旷课两天,一来到学校,就把前两天的课共计16节给补上了,并且今天该上的课也按时上了。Schedule同学也旷了两天课,一来学校,就像自己没旷课一样,今天的课按时上,昨天和前天的课不管了。


      第二个区别:ScheduleAtFixedRate写作业是按时点的,安排5点整写英语,六点整写数学,7点整写历史,如果到6点整英语还没写完,就英语和数学一块写。Schedule同学写作业的时间安排相同,不同的是5点开始写的英语到6点还没写完,他就继续写英语,啥时候英语作业写完了,再啥时候写数学。


  • 不爱吃泡饭
    2018-04-10 11:05:01

    1. 实际执行语句的时间 晚于 设置的timer开始时间:scheduleAtFixedRate会补上应该执行的次数(以连续执行的方式,在实际上第一次执行的时候),schedule错过了的次数不补。

    2. 如果任务的耗时超过设置的时间间隔:scheduleAtFixedRate会严格按照时间点执行(于是任务并行执行着),而schedule上一个任务什么时候完成什么时候执行下一任误才执行(无视延迟,串行执行)

    3. 好吧,我知道你没看懂,我写的我也看不懂,举例子:

      第一个区别:  ScheduleAtFixedRate同学旷课两天,一来到学校,就把前两天的课共计16节给补上了,并且今天该上的课也按时上了。Schedule同学也旷了两天课,一来学校,就像自己没旷课一样,今天的课按时上,昨天和前天的课不管了。

      第二个区别:ScheduleAtFixedRate写作业是按时点的,安排5点整写英语,六点整写数学,7点整写历史,如果到6点整英语还没写完,就英语和数学一块写。Schedule同学写作业的时间安排相同,不同的是5点开始写的英语到6点还没写完,他就继续写英语,啥时候英语作业写完了,再啥时候写数学。