黑豹程序员-Spring Task实现定时任务

定时任务

项目中,我们有一个特殊的要求,无需人为去触发,而是自动去触发程序。通常有一定的频率,每天,某时等。

实现的四种方式

1、java自身提供定时任务java.util.Timer类,但太过简单,几乎无人使用;

2、ScheduledExecutorService:也jdk自带的一个类;是基于线程池设计的定时任务类;并发性能佳;

3、Quartz:这是一个功能比较强大的的调度器,可以让你的程序在指定时间执行,也可以按照某一个频度执行,配置起来稍显复杂;

4、Spring Task:Spring3.0以后自带的task,可以将它看成一个轻量级的Quartz,而且使用起来比Quartz简单许多;

5、Elastic-Job的特点在于其弹性化的调度和任务分片机制,可以有效地解决任务并发和分布式的问题。它还提供了丰富的任务类型和插件式扩展,例如Shell、HTTP、Dubbo等,方便开发者们快速构建定时任务。另外,Elastic-Job还具有任务的动态配置和监控功能,可以对任务进行实时的管理和调优。

这里可以看出Elastic-Job最为强大,但也太过繁琐。

本人推荐采用Spring Task,其功能足够用,又和Spring对接,可以直接使用Spring的资源,操作起来最为方便。

Spring Task 代码实现

bash 复制代码
@EnableScheduling
@Component
@Slf4j
public class ScheduleTask {
    @Autowired
    private SuperviseTaskService superviseTaskService;
    @Autowired
    private NoticeService noticeService;


    @Scheduled(cron = "*/5 * * * * ?")  //cron表达式,定义定时任务每隔5秒;*/5 * * * * ?;每天凌晨3点执行一次:0 0 3 * * ?
    private void configureTasks() {

        log.debug("执行定时任务: " + new Date());
    }

}
相关推荐
专注于大数据技术栈2 分钟前
java学习--注解之@Deprecated
java·学习
weixin_421133417 分钟前
PyInstaller& Nuitka & 项目 (如 django)
后端·python·django
飞梦工作室7 分钟前
Spring Boot3 + Milvus2 实战:向量检索应用开发指南
java·spring boot·后端
m0_740043739 分钟前
mapState —— Vuex 语法糖
java·前端·javascript·vue.js
廋到被风吹走10 分钟前
【JDK版本】JDK1.8相比JDK1.7 JVM(Metaspace 与 G1 GC)
java·开发语言·jvm
7澄111 分钟前
Java Web 底层解析:Servlet 执行流程、Tomcat 工作原理与自定义 Tomcat 实现
java·前端·servlet·tomcat·自定义tomcat·tomcat执行流程·servlet执行流程
冬夜戏雪14 分钟前
【java学习日记】【2025.12.4】【4/60】
java·开发语言·学习
feathered-feathered14 分钟前
网络原理——应用层协议HTTP/HTTPS(重点较为突出)
java·网络·后端·网络协议·http·https
IT_陈寒15 分钟前
React 18并发渲染实战:这5个性能陷阱让我浪费了整整一周!
前端·人工智能·后端
Slow菜鸟17 分钟前
Java项目基础架构(三)| 日志统一处理
java·开发语言