Timer与timeTask 定时执行

2016-03-25  本文已影响319人  lothar_cly

timer是一种定时器工具,用来在一个后台线程中执行指定任务。它可以计划执行一个任务一次或者反复多次。TimeTask一个抽象类,他的子类代表一个可以被Timer计划的任务。


使用Timer中的schedule()方法定制执行方案(图上的意思是5秒后执行,以后每隔5秒执行一次。)具体的方法实现再讨论。
Timer线程的终止。默认情况下只要一个程序的timer线程在运行,那么这个程序会保持运行。当然有四种方案可以用来终止一个timer线程。
1.调用timercancle方法。可以在程序的任何地方调用此方法。甚至可以在timerTaskrun方法中。
2.让timer线程成为一个守护线程(所谓的守护线程就是运行在程序后台的线程,在Java中的定义是:如果虚拟机中只有daemon线程在运行,那么虚拟机退出)。可以在创建timer时使用new Timer(true)达到这个目的。
3.当timer相关的所有task执行完毕以后,删除所有此timer对象的引用(置为NULL)。这样timer线程也会终止。
4.调用system.exit()方法,使整个程序终止。

TimerschedulescheduleAtFixedRate之间的区别。

前者之间的间隔如果前一个任务没有按时完成,那么后一个任务同样会间隔步长再执行,而后者中前一个任务完成后(没有按时完成),会立马执行下一个任务(最大限度的压缩间隔时间)。
1.每个Timer仅对应唯一一个线程。
2.Timer不保证任务执行的十分精确
3.Timer类的线程是安全的。

上一篇下一篇

猜你喜欢

热点阅读