您的位置:首页 > 编程语言 > Java开发

Java多线程编程(第五章)

2016-06-04 20:46 260 查看

1. Timer的使用

定时计划任务(即在指定的时间开始执行某一个任务)功能在Java中主要使用的是Timer对象,它在内部使用多线程的方式进行处理。

Timer类的主要作用是设置任务,封装任务的类是TimerTask,执行任务的代码要放在TimerTask的子类中。

schedule(TimerTask task, Date time)

创建一个Timer就是启动一个线程,这个默认的线程不是守护线程。如果指定时间晚于当前时间时,等到指定时间后再执行;如果指定时间早于当前时间时,则立即执行。Timer里有队列(TaskQueue)来调度多个任务的执行,以执行时间来排列。

schedule(TimerTask task, Date time, long period)

按照指定的间隔无线周期性地执行某一个任务

TimerTask类中的cancel方法的作用是将自身从队列中清除

Timer类中的cancel方法是将队列中的全部任务清除,cancel方法有时并不一定会停止任务(没有获取到队列的锁),而是正常执行

schedule(TimerTask task, long delay)

以当前时间作为参考来做延迟

schedule(TimerTask task, long delay, long period)

以当前时间作为参考来做延迟,在无限周期性地执行任务

schedule 和 scheduleAtFixedRate

方法schedule和scheduleAtFixedRate 主要的区别在于不延时的情况

schedule:如果执行任务的时间没有被延时,那么下一次任务的执行时间参考的是上一次任务的”开始”时间。

scheduleAtFixedRate:如果执行任务的时间没有被延时,那么下一次任务的执行时间参考的是上一次任务的”结束”时间。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: