网站建设说辞,免费获取源码的网站,业绩显示屏 东莞网站建设技术支持,工装哪家装修公司好定时任务
项目中#xff0c;我们有一个特殊的要求#xff0c;无需人为去触发#xff0c;而是自动去触发程序。通常有一定的频率#xff0c;每天#xff0c;某时等。
实现的四种方式
1、java自身提供定时任务java.util.Timer类#xff0c;但太过简单#xff0c;几乎无…定时任务
项目中我们有一个特殊的要求无需人为去触发而是自动去触发程序。通常有一定的频率每天某时等。
实现的四种方式
1、java自身提供定时任务java.util.Timer类但太过简单几乎无人使用 2、ScheduledExecutorService也jdk自带的一个类是基于线程池设计的定时任务类并发性能佳 3、Quartz这是一个功能比较强大的的调度器可以让你的程序在指定时间执行也可以按照某一个频度执行配置起来稍显复杂 4、Spring TaskSpring3.0以后自带的task可以将它看成一个轻量级的Quartz而且使用起来比Quartz简单许多 5、Elastic-Job的特点在于其弹性化的调度和任务分片机制可以有效地解决任务并发和分布式的问题。它还提供了丰富的任务类型和插件式扩展例如Shell、HTTP、Dubbo等方便开发者们快速构建定时任务。另外Elastic-Job还具有任务的动态配置和监控功能可以对任务进行实时的管理和调优。
这里可以看出Elastic-Job最为强大但也太过繁琐。 本人推荐采用Spring Task其功能足够用又和Spring对接可以直接使用Spring的资源操作起来最为方便。
Spring Task 代码实现
EnableScheduling
Component
Slf4j
public class ScheduleTask {Autowiredprivate SuperviseTaskService superviseTaskService;Autowiredprivate NoticeService noticeService;Scheduled(cron */5 * * * * ?) //cron表达式定义定时任务每隔5秒*/5 * * * * ?每天凌晨3点执行一次0 0 3 * * ?private void configureTasks() {log.debug(执行定时任务: new Date());}}