Timer与timeTask 定时执行
2016-03-25 本文已影响319人
lothar_cly
timer
是一种定时器工具,用来在一个后台线程中执行指定任务。它可以计划执行一个任务一次或者反复多次。TimeTask
一个抽象类,他的子类代表一个可以被Timer计划的任务。
使用
Timer
中的schedule()
方法定制执行方案(图上的意思是5秒后执行,以后每隔5秒执行一次。)具体的方法实现再讨论。Timer
线程的终止。默认情况下只要一个程序的timer
线程在运行,那么这个程序会保持运行。当然有四种方案可以用来终止一个timer
线程。1.调用
timer
的cancle
方法。可以在程序的任何地方调用此方法。甚至可以在timerTask
的run
方法中。2.让
timer
线程成为一个守护线程(所谓的守护线程就是运行在程序后台的线程,在Java
中的定义是:如果虚拟机中只有daemon
线程在运行,那么虚拟机退出)。可以在创建timer
时使用new Timer(true)
达到这个目的。3.当
timer
相关的所有task
执行完毕以后,删除所有此timer
对象的引用(置为NULL
)。这样timer
线程也会终止。4.调用
system.exit()
方法,使整个程序终止。
Timer
中schedule
和scheduleAtFixedRate
之间的区别。
前者之间的间隔如果前一个任务没有按时完成,那么后一个任务同样会间隔步长再执行,而后者中前一个任务完成后(没有按时完成),会立马执行下一个任务(最大限度的压缩间隔时间)。
1.每个Timer
仅对应唯一一个线程。
2.Timer
不保证任务执行的十分精确
3.Timer
类的线程是安全的。