定时任务框架初步学习

本文介绍了Java定时任务框架的基本使用,包括引入框架、创建定时任务和理解cron表达式。深入探讨了框架的类结构,如ScheduledJob、Scheduler和SchedulerManager。详细解析了框架逻辑,包括SchedulerManager的初始化、Scheduler的线程管理和ScheduledJobThread的执行流程。
摘要由CSDN通过智能技术生成

9.10 定时任务框架初步了解
阅读框架实现方式,有助于更好的使用框架,理解设计思想。

一、基本使用

了解定时任务的基本使用

1.1 引入框架源码

在这里插入图片描述

1.2 调用SchedulerManager创建定时任务

该类是定时任务的线程管理工具,可通过此类提供的方法,创建定时任务,并加入线程队列

	schedulerManager.schedule("activitybegin-job", "0 0/5 * * * ?", new ScheduledJob() {
   
		@Override
		private void run(){
   }; // 业务代码

		@Override
		private void terminate(){
   }; // 终止线程方式,应用于线程引擎终止时每个线程的销毁方式
	}

调用schedulerManager.schedule方法创建一个定时任务线程,该方法需要传递三个参数

  • jobName:定时任务的名称,后缀要与配置的job.type一致(application.properties)
  • crontab表达式:周期执行模式
  • ScheduleJob:线程任务(在定时任务线程中被执行),内部需要实现run、terminate两个方法,run内写业务代码、terminate内写终止工作线程方式

1.3 crontab表达式

通过书写crontab表达式,可以指定线程周期执行的模式,比如每隔5秒执行一次,每个小时的前五分钟的每5秒执行一次……

如上 “0 0/5 * * * ?” 代表的是每星期的每一天,每隔五分钟执行一次。
crontab表达式由一组连续的数字或字符组成,他们之间通过一个空格分隔。从左到右依次代表
秒 分钟 小时 天 月份 每周的第几天 年(可以省略)
以下是标识范围的的字符形式,0/x表示的是间隔,执行周期为x。 * 代表所有的时间段。 - 代表在什么什么范围内。?代表任意。
在这里插入图片描述

二、整体分析:类结构分析

理解类结构,是理解框架细节的前提。

  • ScheduledJob:线程任务接口,我们的定时任务业务就是写在这个实现类里
  • Scheduler:定时任务引擎,它包含一个内部类ScheduledJobThread,作为我们线程任务执行的载体。内部维护了一个ScheduledJobThread集合。
  • SchedulerManager:根据配置,决定是否初始化Scheduler、但前定时任务线程的名字是否合法。它是我们直接操作的对象,可以通过它来创建定时任务。
  • JobConfig:配置类,用于获取job前缀的配置属性。配置属性包括type:工作类型,whiteList:白名单。
  • CronExpression:定时异常类。

三、具体分析:框架逻辑分析

按照程序执行流程,来理解框架的逻辑。

3.1 SchedulerManager

内部维护的属性:

  • JobConfig:配置信息
  • EnvironmentService:开发环境service,用于判断当前开发环境。
  • mqEnabled:是否开启消息队列
  • Scheduler:定时任务引擎

初始化动作:

	@PostConstruct
    public void init()
    {
   
        boolean jobSchedule = "job".contentEquals(config.getType());
       
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值