定义:基于给定的时间点、给点的时间间隔或者给定的执行次数自动执行的任务
Timer:多数的定时任务,由jdk直接提供。尽量使用timer
Quartz:搞定一切,源于开源项目,需要其他jar包支持。时间控制机制更加完善。
schedule(TimerTask task, Date time) :在特定时间执行任务,只执行一次
schedule(TimerTask task, long delay) :在特定时间之后执行任务,只执行一次
schedule(TimerTask task, Date firstTime,long period) :指定第一次执行的时间,然后按照间隔时间,重复执行
schedule(TimerTask task, long delay, long period):在特定延迟之后第一次执行,然后按照间隔时间,重复执行
scheduleAtFixedRate(TimerTask task, long delay, long period) :第一次执行之后,特定频率执行,与3同
scheduleAtFixedRate(TimerTask task,Date firstTime,long period) :在delay毫秒之后第一次执行,后按照特定频率执行
Timer的设计核心是一个TaskList和TaskThread。
Timer会将收到的任务丢到自己的TaskList中,TaskList按照最初执行时间进行排序。
TaskThread在创建Timer时会启动成为一个守护线程。这个线程会轮巡所有任务,找到一个最近要执行的任务,然后休眠,当达到最近要执行任务的开始时间点TaskThread被唤醒并执行该任务。之后TimerThread更新最近一个要执行的任务继续休眠。
Timer的优缺点:
优点:Timer的优点在于简单易用。
缺点:Timer的所有任务都是由同一线程调度
网友评论