天津专门做网站的公司,佛山营销型网站搭建,WordPress关闭登录,wordpress下载主题错误在未来某个指定的时间点或者经过一段时间延迟后执行某个事件#xff0c;这时候就需要用到定时器了。定时器的实现方式有很多种#xff0c;今天总结最简单的实现方式。java 1.3引入了定时器框架#xff0c;用于在定时器上下文中控制线程的执行#xff0c;其由类Timer和Timer…在未来某个指定的时间点或者经过一段时间延迟后执行某个事件这时候就需要用到定时器了。定时器的实现方式有很多种今天总结最简单的实现方式。java 1.3引入了定时器框架用于在定时器上下文中控制线程的执行其由类Timer和TimerTask构成。Timer适用于大规模并发调度定时任务在内部该类使用二进制的堆表示其定时任务队列。 通过继承TimerTask或者创建匿名类的方式重写run()方法创建一个定时任务通过将其作为第一个参数调用Timer得schedule()方法实现定时器。 import java.util.Timer;
import java.util.TimerTask;public class TimerDemo {// 通过创建匿名类方式实现public static void main(String[] args) {// 首先初始化一个TimerTask的匿名子类TimerTask task new TimerTask() {Overridepublic void run() {System.out.println(开始执行);//退出程序返回最上层0表示正常退出程序非0表示非正常退出程序System.exit(0);}};//通过Timer调用Timer timer new Timer();timer.schedule(task, 2000);}
} Timer创建的定时器一般为非线程守护如果想要创建守护线程需调用Timer(boolean isDaemon) 传递参数true给isDaemon。 Timer类声明的方法如下 void schedule(TimerTask task, long delay) 在delay毫秒之后调度任务执行。void schedule(TimerTask task, Date time) 在某个时间点调度任务执行。void schedule(TimerTask task, long delay, long period) 在delay毫秒之后调度任务开始执行以固定时间间隔的方式重复执行后续将一大约period毫秒的固定时间间隔执行。void schedule(TimerTask task, Date firstTime, long period) 调度任务于firstTime开始以固定时间间隔的方式重复执行后续将一大约period毫秒的固定时间间隔执行。void scheduleAtFixedRate(TimerTask task, long delay, long period) 在delay毫秒之后开始调度任务以固定速率的方式重复执行后续将以大约period毫秒数的固定时间间隔执行。 void scheduleAtFixedRate(TimerTask task, Date firstTime,long period) 调度任务于firstTime开始以固定速率的方式重复执行后续将大约period毫秒数的固定时间间隔执行。 sched(TimerTask task, long time, long period) 在指定时间执行调度任务执行以固定时间间隔的方式重复执行后续将一大约period毫秒的固定时间间隔执行。void cancel() 终止定时器丢弃所有当前调度的定时器任务。不干涉当前正在执行的任务能保证正在执行的任务一定是最后一个被该定时器执行的任务。int purge() 从该定时器队列中移除所有取消的定时任务并且返回被移除任务的数目。定时任务都是抽象类TimerTask子类的实例这些子类实现Runnable接口当子类实例化TimerTask的时候需要重写其voud run()方法。 TimerTask类声明的方法如下 boolean cancel()取消这个定时任务long scheduledExecutionTime() 返回此定时任务最近实际被调度执行时间。Timer的cancel()和TimerTask的TimerTask的区别在于Timer的cancel()会终止定时器并放弃当前任意被调度的定时任务而TimerTask的cancel()方法仅仅会取消正在调度的定时任务。 转载于:https://www.cnblogs.com/Sweethoney/p/10486483.html