什么是定时器?
定时器是一种控制任务延时调用,或者周期调用的技术
作用 : 闹钟,定时邮件发送。
定时器的实现方法
方法一 : Timer
方式二:ScheduledExecutorService
方式一定义定时器
public class TimerDemo {
public static void main(String[] args) {
Timer timer =new Timer(); //定时器是一个周期
timer.schedule(new TimerTask() {
@Override
public void run() {
System.out.println(Thread.currentThread().getName()+"执行一次");
}
},3000,2000); //参数二 多少秒后执行 ,参数三多少秒执行一次
}
}
存在的问题:
1.Timer定时器是单线程,处理多个任务按照顺序执行,存在延时于设置定时器的时间有出入
2.可能因为其中的某个任务的异常使线程死掉,从而影响后续任务执行。
方式二
ScheduledExecutorService定时器
public class TimerDemo1 { public static void main(String[] args) { //创建ScheduleExecutorService 线程池,做定时器 ScheduledExecutorService pool = Executors.newScheduledThreadPool(3); //3个线程 pool.scheduleAtFixedRate(new TimerTask() { @Override public void run() { System.out.println(Thread.currentThread().getName()+"执行线程aaa"); } },0,2, TimeUnit.SECONDS); //参数二 多少秒后执行 ,参数三多少秒执行一次 } }
ScheduleExecutorService的优点
1,基于线程池,某个任务的执行不会影响其他任务的执行。