关于定时任务,看着一系列就够了——1.基础篇

简介: JAVA项目中使用定时任务基础篇,简单介绍定时任务,并说明这一系列文章要写什么,大家可以从这个系列中获得什么收益

一、导论

在日常的开发工作中我们经常会遇到定时任务的相关问题,比如:

  1. 信用卡定时每月给用户推送账单数据;
  2. 轮训更新某个任务的状态是否完成;
  3. 设置一个定时提醒;
  4. 邮件或消息设置定时发送;
  5. 定时统计某个时间段的数据存入缓存;

等等,定时可以算一个最常用的开发工作,你日常的工作中肯定也写了不少的定时任务代码,但是你真的了解定时任务吗?
下面让我们一起进入定时任务的学习!

二、基础

1. Cron表达式
参见第二篇《关于定时任务,看着一系列就够了——2.Cron表达式》
cron是当前做定时任务的基础,即使很多人说cron表达式不容易理解,但这是现在阶段所有程序编写定时任务的基础和唯一选择。就算做不到熟练编写,也应该做到看到能懂;
Cron表达式是一个字符串,字符串以5或6个空格隔开,分为6或7个域,每一个域代表一个含义;
例如:

每隔5秒执行一次:*/5 * * * * ?
每隔1分钟执行一次:0 */1 * * * ?
每天23点执行一次:0 0 23 * * ?
每天凌晨1点执行一次:0 0 1 * * ?
每月1号凌晨1点执行一次:0 0 1 1 * ?
每月最后一天23点执行一次:0 0 23 L * ?
每周星期天凌晨1点实行一次:0 0 1 ? * L
在26分、29分、33分执行一次:0 26,29,33 * * * ?
每天的0点、13点、18点、21点都执行一次:0 0 0,13,18,21 * * ?

2. 定时任务的三大组成部分:
调度器Scheduler、执行器 executors、触发器 Trigger
不管你使用的什么框架、用的是什么系统,或者将来又出现什么新的定时任务技术,都离不开这三部分。
我们以一个闹钟响铃的任务为例:
执行器executors:发出一阵刺耳的声音;(具体的执行操作)
触发器Trigger:发出声音的具体时间; (触发任务执行的规则,多为时间规则。)
调度器Scheduler:一直运行到触发时间点发出刺耳的声音;(进行任务的调度)
所以,当接手一个新的定时任务的框架,首先要看其这三部分是这么去实现的;

三、常用案例

后面的章节我会把软件开发项目中常用的定时任务,一一进行介绍,初步计划有

  1. Liunx 定时任务
  2. Windows 定时任务
  3. 时间轮(待更新)
  4. JDK 线程+sleep 实现定时任务
  5. JDK Timer & TimerTask 实习定时任务
  6. JDK ScheduledExecutorService
  7. Spring Task中的 @schedule
  8. Quartz
  9. Elastic-Job
  10. XXL-JOB
  11. PowerJob
  12. 消息队列实现定时任务
  13. redis实现定时任务
  14. JavaScript前端定时任务

后面会对以上的定时任务使用场景、易用性、优势劣势进行比较。方便大家有选择性的学习。

目录
相关文章
|
调度
关于定时任务,看着一系列就够了——2.Cron表达式
软件开发定时任务基础—— Cron 表达式介绍
1503 0
关于定时任务,看着一系列就够了——2.Cron表达式
|
监控 数据可视化 前端开发
十分钟搞懂阿里Sentinel核心源码(上)
十分钟搞懂阿里Sentinel核心源码(上)
923 0
十分钟搞懂阿里Sentinel核心源码(上)
|
6月前
|
数据采集 前端开发 JavaScript
《花100块做个摸鱼小网站! 》第四篇—前端应用搭建和完成第一个热搜组件
本文档详细介绍了从零开始搭建一个包含前后端交互的热搜展示项目的全过程。通过本教程,读者不仅能学习到完整的项目开发流程,还能掌握爬虫技术和前后端交互的具体实践。适合有一定编程基础并对项目实战感兴趣的开发者参考。
108 1
|
存储 JSON 搜索推荐
【测试平台系列】第一章 手撸压力机(十二)-初步实现提取功能
上一章节,我们主要实现了基础的并发测试场景的能力。本章节,我们实现一下,如何对响应进行提取,使用正则/json对响应信息提取,并赋值给我们定义的变量。
|
Shell Linux
Shell 一个月时间让你从小白到实战【万字笔记建议收藏方便学习】1
Shell 一个月时间让你从小白到实战【万字笔记建议收藏方便学习】1
108 0
|
机器学习/深度学习 监控 Shell
Shell 一个月时间让你从小白到实战【万字笔记建议收藏方便学习】2
Shell 一个月时间让你从小白到实战【万字笔记建议收藏方便学习】2
72 0
|
存储 小程序 容器
想做个答题类的微信小游戏?读这篇文章就够了
本文重要内容包含答题类小游戏的制作原理和制作方法,在掌握实现原理和方法后,你也能够根据自己的需要,制作自己的答题类小游戏。 如果你没有任何的游戏开发经验,欢迎阅读我的“人人都能做游戏”系列教程,它会手把手的教你做出自己的第一个小游戏。
257 0
|
小程序 开发工具 UED
实现各种效果和功能的按钮,读这篇文章就够了
本文主要内容包含各种效果和功能的按钮的实现方法,以及应用场景。 如果你没有任何的游戏开发经验,欢迎阅读我的“人人都能做游戏”系列教程,它会手把手的教你做出自己的第一个小游戏。
191 0
|
监控 Java 程序员
十分钟掌握java多线程进阶
十分钟掌握java多线程进阶
161 0
十分钟掌握java多线程进阶