一、Timer
Timer是JAVA自带的定时任务类,实现如下:
public?class?MyTimerTask?{????
public?static?void?main(String[]?args)?{????????
//?定义一个任务???????
? TimerTask?timerTask?=?new?TimerTask()?{????????????
@Override????????????
public?void?run()?{????????????????
System.out.println("打印当前时间:"?+?new?Date());????
???????? }???????
? };????????
//?计时器???????
? Timer?timer?=?new?Timer();???????
? //?开始执行任务 (延迟1000毫秒执行,每3000毫秒执行一次)????????
timer.schedule(timerTask,?1000,?3000);????
}
}
Timer 优缺点分析
优点是使用简单,缺点是当添加并执行多个任务时,前面任务的执行用时和异常将影响到后面任务,这边深海建议谨慎使用。
二、ScheduledExecutorService
ScheduledExecutorService也是Java自带的类,
它可以实现Timer具备的所有功能,并解决了 Timer类存在的问题。
实现如下:
public?class?MyScheduledExecutorService?{????
public?static?void?main(String[]?args)?{????????
//?创建任务队列???10?为线程数量??????
ScheduledExecutorService?scheduledExecutorService?=?
Executors.newScheduledThreadPool(10);?
//?执行任务??????
?? scheduledExecutorService.scheduleAtFixedRate(

本文介绍了Java实现定时任务的三种方法:Timer、ScheduledExecutorService和Spring Task。Timer简单但易受任务执行影响;ScheduledExecutorService更稳定,适合单机环境;Spring Task支持复杂定时配置,如cron表达式。此外,文章还探讨了分布式环境下的定时任务解决方案,包括Redis的ZSet和键空间通知实现。
最低0.47元/天 解锁文章
2364

被折叠的 条评论
为什么被折叠?



