java定时器Timer当执行时间大于间隔时间会怎样
来源:互联网 发布:大疆精灵4pos数据导出 编辑:程序博客网 时间:2024/04/29 03:51
如果你用的是 java.util.Timer,那么这个Timer 有两种执行模式:
fixed-rate:对应于 scheduleAtFixedRate 方法
fixed-delay:对应于 schedule 方法
fixed-rate 模式,如果某次任务超时了,它会智能的缩短下一次任务的执行时间,
比如你 10 秒一次任务,但是任务执行了 15 秒,
那么下一次任务如果没有超时的话,可能也不会分配给他完整的 10 秒,而是 5 秒
目的是尽量让后面的任务可以赶上来
任务执行时间可能是这样一个模式:
第一次任务:15 秒(超时)
第二次任务:8 秒(未超时)
第三次任务:7 秒(未超时)
第四次任务:10 秒(未超时)
……
如果你任务一直都在超时,可能每次任务执行完之后,就会立刻执行下一次任务
其实如果你每次任务都超时,你应该考虑的是,
在程序中,就增加任务的延时
fixed-delay 模式,如果你某次任务超时了,也不会影响下一次任务的执行时间
10 秒周期的任务,执行了 15 秒
那下一次任务依然是分配完整的 10 秒
任务执行时间可能是这样一个模式:
第一次任务:15 秒(超时)
第二次任务:10 秒(未超时)
第三次任务:10 秒(未超时)
第四次任务:15 秒(超时)
如果你用的是 javax.swing.Timer,这个是按固定周期触发的
由于这个 Timer 是在 EDT (Java GUI 的事件指派线程)上执行的
EDT 有智能合并任务的处理
如果你某次任务超时了,那么下一次任务将和下下次任务智能合并成一个任务
比如 10 秒周期的任务,执行了 15 秒
任务执行时间可能是这样一个模式:
第一次任务:20 秒(超时)
第二次任务:合并
第三次任务:10 秒(未超时)
……
其实 javax.swing.Timer 也有 Fixed Rate 模式,
可以通过 setCoalesce(false); 方法开启
但是不建议这样使用
- java定时器Timer当执行时间大于间隔时间会怎样
- 用定时器中断,单片机中断处理时间大于定时器定时时间会怎样?
- Quartz 当 Job 执行时间超过触发间隔时间时所发生的情况
- java定时器 Timer
- java中的定时器Timer
- java中timer定时器
- java定时器1:Timer
- JAVA Timer 定时器原理
- Java线程-Timer定时器
- java Timer 定时器
- java的定时器(Timer)
- java中的定时器Timer
- Timer 定时器类 java
- Java定时器Timer()
- java中Timer定时器
- java web定时器Timer
- java 定时器Timer
- Java基础:定时器Timer
- 写给应届毕业生,校招经历
- DOM事件
- 我的Android 成长之路
- [原]横向滑动的HorizontalListView滑动指定位置的解决方法
- typedef int (*init_fnc_t)(void);的理解
- java定时器Timer当执行时间大于间隔时间会怎样
- 32/64位操作系统&&应用程序详解(英文资料)
- hdu 3033 I love sneakers!
- 黑马程序员-OC加强回顾-内存管理
- java 异常在实际应用中的总结
- 光棍节pairs引发的血案
- Intent 拨打电话
- 用java开发跨平台简易服务器站点监控程序
- 《Java JDK8学习笔记》读书笔记(2)