定时器

public class TimerDemo01 {
public static void main(String[] args) {
//1. 创建Timer定时器
Timer timer = new Timer();//定时器本身就是一个单线程
//2. 调用方法,处理定时任务
timer.schedule(new TimerTask() {
@Override
public void run() {
System.out.println(Thread.currentThread().getName()+"执行一次");
}
},3000,2000);
}
}
Timer定时器的特点和存在的问题

1、Timer是单线程,处理多个任务按照顺序执行,存在延时与设置定时器的时间有出入。

2、可能因为其中的某个任务的异常使Timer线程死掉,从而影响后续任务执行。

 

--------------------------------------------------------------------------

ScheduledExecutorService定时器
public class TimerDemo02 {
public static void main(String[] args) {
//1. 创建ScheduledExecutorService线程池
ScheduledExecutorService pool = Executors.newScheduledThreadPool(3);

//2. 开启定时任务
pool.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
System.out.println(Thread.currentThread().getName()+"执行AAA");
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
},0,2, TimeUnit.SECONDS);

pool.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
System.out.println(Thread.currentThread().getName()+"执行输出"+new Date());
}
},0,2, TimeUnit.SECONDS);
}
}

ScheduledExecutorService的优点

1、基于线程池,某个任务的执行情况不会影响其他定时任务的执行。

posted on 2022-03-31 11:17  我要当程序源  阅读(81)  评论(0编辑  收藏  举报

导航