java定时器
现象:
了解java定时器:schedule方法和scheduleAtFixedRate方法
定时器
- 区别一:
- schedule方法,定时任务,按照代码实际执行任务的时间进行固定频率的执行,不按照原来代码中设定的时间进行固定频率执行(以上次任务结束的时间作为下次任务时间开始的起点间隔算)。
- scheduleAtFixedRate方法,定时任务,按照代码中指定的时间进行固定频率的执行,但是TimerTask中任务执行的时间可能会和固定频率执行的重叠,需要考虑线程的同步。
- 区别二:如果设置了任务的开始时间
- 如果指定开始执行的时间在当前系统运行时间之前,两个都会立即开始任务的执行
- scheduleAtFixedRate会把已经过去的时间也作为周期执行,(会把过去的任务执行作为弥补)
- 而schedule不会把过去的时间算上。而是重新开始用启动的时间第一次执行任务
方法:
方法一:延迟执行
方法二:延迟执行同时每隔一段时间重复执行任务
方法三:scheduleAtFixedRate
设置延迟执行和重复执行
方法四:设置方法在指定的时间执行,同时设置时间间隔重复执行
方法五:使用scheduleAtFixedRate
比较方法四和方法五 ,前面表达的区别二显而易见!
scheduleAtFixedRate会把已经过去的时间也作为周期执行,