springboot中简单定时任务使用:Scheduled

1-导入依赖

org.springframework

spring-context-support

6.0.2.RELEASE

2-编写定时器类

/**

* 定时任务

*/

@Component

public class ScheduledDemo {

/**

* 定时任务

* @Scheduled 设置定时任务

* 1--cron属性:cron表达式,定时任务触发时间的一个字符串表达形式

*/

@Scheduled(cron = "0/2 * * * * ?")

public void scheduledMethod(){

System.out.println("定时器触发:"+new Date());

}

}

说明

* Cron,表达式是一个字符串,分为6或7个域,每一个域代表一个含义Cron有如下两种语法格式:

* (1)Seconds Minutes Hours Day Month Week Year

* (2) Seconds Minutes Hours Day Month Week

* 位置 时间域名 允许值 允许的特殊字符

* 1 秒 0-59 , _ * /

* 2 分钟 0-59 , _ * /

* 3 小时 0-23 , _ * /

* 4 日期 1-31 , _ * / L W C 需配合月使用

* 5 月 1-12 , _ * /

* 6 星期 1-7 , _ * / ? L C # 1表示星期日,7表示星期一 星期也要配合日使用,一般只用一个

* 7 年(可选) 1970-2099 , _ * /

星号(*):可用在所有字段中s表示对应时间城的每一个时刻s例如s在分钟字段时,表示"每分钟";

问号(?)∶该字符只在日期和星期字段中使用,它通常指定为"无意义的值",相当于占位符﹔

减号(-):表达一个范围,如在小时字段中使用"10-12",则表示从10到12点,即10,11,12;

逗号(,):表达一个列表值,如在星期字段中使用"MON,WED,FRI",则表示星期一,星期三和星期五;

斜杠(/): xly 表达一个等步长序列s×为起始值,y为增里步长值。如在分钟字段中使用0/15,则表示为0,15,30和45秒,而5/15在分钟字段中表示 5,20,35,50,你也可以使用/y,它等同于0/y3

L:该字符只在日期和星期字段中使用,代表""Last"的意思,但它在两个字段中意思不同。" +

L在日期字段中,表示这个月份的最后一天,如一月的31号,非i闰年二月的28号;

如果L用在星期中,则表示星期六,等同于7○但是,如果L出现在星期字段里,

而且在前面有一个数值X,则表示"这个月的最后X天"”,例如,6L表示该月的最后星期五﹔

W:该字符只能出现在日期字段里,是对前导日期的修饰,表示离该日期最近的工作日。

例如15W表示离该月15号最近的工作日,

如果该月15号是星期六,则匹配14号星期五﹔

如果15日是星期日,则匹配16号星期一﹔

如果15号是星期二,那结果就是15号星期二,但必须注意关联的匹配日期不能够跨月,

如你指定1W,如果1号是星期六,结果匹配的是3号星期一,

而非上个月最后的那天。W字符串只能指定单一日期。而不能指定日期范围;

LW组合:在日期字段可以组合使用LW,它的意思是当月的最后一个工作日;

井号(#):该字符只能在星期字段中使用v表示当月某个工作日 如6#3表示当月的第三个星期五(6表示星期五,#3表示当前的第三个),而4#5表示当月的第五个星期三,假设当月没有第五个星期三,忽略不触发;

C:该字符只在日期和星期字段中使用,代表"Calendar"的意思。

它的意思是计划所关联的日期,如果日期没有被关联,则相当于日历中所有日期

例如5C在日期字段中就相当于日历5日以后的第一天o1C在星期字段中相当于星期日后的第一天。

Cron表达式对特殊字符的大小写不敏感,对代表星期的缩写英文大小写也不敏感。

3-启动类开启定时任务的使用

@SpringBootApplication

@EnableScheduling

public class Sb1Application {

public static void main(String[] args) {

SpringApplication.run(Sb1Application.class, args);

}

}

第三方定时任务框架:Quartz

1--job 任务 你要做啥

2--Trigger 触发器 你什么时候去做

3--Scheuler 任务调度 你什么时候需要去做什么事

基本使用

1-导入依赖添加坐标

org.quartz-scheduler

quartz

2.2.1

2-定义class继承job重写execute方法,即定义任务类编写任务

public class QuartzDemo implements Job {

/**

* 任务被触发是所执行的方法

* @param jobExecutionContext

* @throws JobExecutionException

*/

public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {

System.out.println("quartz自动任务--cexcute方法执行。。。"+new Date());

}

}

3-编写调度类测试

import org.quartz.*;

import org.quartz.impl.StdSchedulerFactory;

public class QuartzMain {

public static void main(String[] args) throws SchedulerException {

//1-先创建job对象:做什么

JobDetail job = JobBuilder.newJob(QuartzDemo.class).build();

//2-创建Trigger对象:什么时间做

/**

* 简单的trigger触发时间: 通过quartz提供一个方法来完成简单的重复调用

* cron Trigger: 按照cron的表达式来给定触发时间

*/

Trigger trigger = TriggerBuilder.newTrigger()

// .withSchedule(SimpleScheduleBuilder.repeatSecondlyForever())//通过内置方法设置定时 知己即每秒钟重复

.withSchedule(CronScheduleBuilder.cronSchedule("0/5 * * * * ?")) //通过cron表达式来设置定时

.build();

//3-创建Scheduler对象: 任务调度,什么时候做什么事

Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();

scheduler.scheduleJob(job,trigger);//设置调度

//启动

scheduler.start();

}

}

spring整合Quartz

1-引入依赖

org.quartz-scheduler

quartz

2.2.1

slf4j-api

org.slf4j

org.springframework

spring-context-support

6.0.2.RELEASE

org.springframework

spring-tx

6.0.2.RELEASE

2-编写任务类

import org.quartz.Job;

import org.quartz.JobExecutionContext;

import org.quartz.JobExecutionException;

import java.util.Date;

public class QuartzDemo implements Job {

/**

* 任务被触发是所执行的方法

* @param jobExecutionContext

* @throws JobExecutionException

*/

public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {

System.out.println("quartz自动任务--cexcute方法执行。。。"+new Date());

}

}

3-创建配置类返回相应对象

import com.xiaoai.quartz.QuartzDemo;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

import org.springframework.scheduling.quartz.JobDetailFactoryBean;

import org.springframework.scheduling.quartz.SchedulerFactoryBean;

import org.springframework.scheduling.quartz.SimpleTriggerFactoryBean;

/**

* quartz配置类

*/

@Configuration

public class QuartzConfig {

/**

* 1- 创建job对象

*/

@Bean

public JobDetailFactoryBean jobDetailFactoryBean(){

JobDetailFactoryBean factory = new JobDetailFactoryBean();

//关联自己的job类

factory.setJobClass(QuartzDemo.class);

return factory;

}

/**

* 2- 创建Trigger对象

*/

@Bean

public SimpleTriggerFactoryBean simpleTriggerFactoryBean(JobDetailFactoryBean jobDetailFactoryBean){

SimpleTriggerFactoryBean factory = new SimpleTriggerFactoryBean();

//关联jobdetail对象

factory.setJobDetail(jobDetailFactoryBean.getObject());

//设置一个执行的毫秒数

factory.setRepeatInterval(2000);

//重复次数

factory.setRepeatCount(5);

return factory;

}

/**

* 1- 创建Scheduler对象

*/

@Bean

public SchedulerFactoryBean schedulerFactoryBean(SimpleTriggerFactoryBean simpleTriggerFactoryBean){

SchedulerFactoryBean factory = new SchedulerFactoryBean();

//关联Trigger

factory.setTriggers(simpleTriggerFactoryBean.getObject());

return factory;

}

}

4-启动类开启定时任务

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.scheduling.annotation.EnableScheduling;

@SpringBootApplication

@EnableScheduling //开启定时任务

public class quartzdemoApplication {

public static void main(String[] args) {

SpringApplication.run(quartzdemoApplication.class, args);

}

}

可以在配置类中返回一个cron实例,实现通过cron表达式设置定时

import com.xiaoai.quartz.QuartzDemo;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

import org.springframework.scheduling.quartz.CronTriggerFactoryBean;

import org.springframework.scheduling.quartz.JobDetailFactoryBean;

import org.springframework.scheduling.quartz.SchedulerFactoryBean;

import org.springframework.scheduling.quartz.SimpleTriggerFactoryBean;

/**

* quartz配置类

*/

@Configuration

public class QuartzConfig {

/**

* 1- 创建job对象

*/

@Bean

public JobDetailFactoryBean jobDetailFactoryBean(){

JobDetailFactoryBean factory = new JobDetailFactoryBean();

//关联自己的job类

factory.setJobClass(QuartzDemo.class);

return factory;

}

/**

* 2- 创建Trigger对象

*/

// @Bean

// public SimpleTriggerFactoryBean simpleTriggerFactoryBean(JobDetailFactoryBean jobDetailFactoryBean){

// SimpleTriggerFactoryBean factory = new SimpleTriggerFactoryBean();

// //关联jobdetail对象

// factory.setJobDetail(jobDetailFactoryBean.getObject());

// //设置一个执行的毫秒数

// factory.setRepeatInterval(2000);

// //重复次数

// factory.setRepeatCount(5);

// return factory;

// }

/**

* cron trigger

*/

@Bean

public CronTriggerFactoryBean cronTriggerFactoryBean(JobDetailFactoryBean jobDetailFactoryBean){

CronTriggerFactoryBean factory = new CronTriggerFactoryBean();

//关联job

factory.setJobDetail(jobDetailFactoryBean.getObject());

//设置触发时间

factory.setCronExpression("0/2 * * * * ?");

return factory;

}

/**

* 1- 创建Scheduler对象

*/

@Bean

public SchedulerFactoryBean schedulerFactoryBean(CronTriggerFactoryBean cronTriggerFactoryBean){

SchedulerFactoryBean factory = new SchedulerFactoryBean();

//关联Trigger

factory.setTriggers(cronTriggerFactoryBean.getObject());

return factory;

}

}

job类对象注入

时间表达式java定时器_java--定时器相关推荐

  1. java销毁定时器_Java 定时器退出解决方案

    项目中用到了 Timer 每隔一段时间进行一些操作,现在发现有时候莫名其妙地挂在这个计时器上的操作都不做了,用"JConsole"查看其中的线程以后,发现这个定时器线程也不在了(定 ...

  2. java实现quartz定时器_java定时器quartz实现解析

    上次我们了解过了timer的有关内容,这次来了解下另外一个定时器quartz的实现,快来看看吧. 1.首先,在pom.xml中进行最重要也是基础的导包环节 org.quartz-scheduler q ...

  3. lambda表达式 java求和_java 8 stream、lambda表达式对list操作分组、过滤、求和、最值、排序、去重...

    1.分组 通过groupingBy分组指定字段 list.stream().collect(Collectors.groupingBy(User::getSex)); 2.过滤 通过filter方法过 ...

  4. java当中的定时器怎么做_java当中的定时器的4种使用方式

    对于开发游戏项目,计时器相信当然不陌生,今天爱站技术频道小编总结了java当中的定时器的4种使用方式,大家可以模仿小编的方法进行操作,希望对你学习有帮助! import java.util.Calen ...

  5. java 定时器代码_Java定时器代码的编写

    Java定时器代码的编写 在某些时候, 我们需要实现这样的`功能,某一程序隔一段时间执行一次,而这一事情由系统本身来完成,并不是人为的触发,我们一般可称此为定时器任务.其实到Java中,实现起来是非常 ...

  6. java定时器配置_java定时器实现如何配置?

    定时器在一些时候会起到不可忽视的作用,本篇文章我们就来通过一些例子详细了解一下定时器的实现. 例1:import java.util.TimerTask; public class TimeTast  ...

  7. java quartz timer_Java定时器Quartz和Timer

    Java定时器之Quartz 简介 官方说明 Quartz is a richly featured, open source job scheduling library that can be i ...

  8. Java开发中定时器的使用

    在JAVA中实现定时器功能要用的2个类是Timer,TimerTask Timer类是用来履行任务的类,它接受1个TimerTask做参数 Timer有两种履行任务的模式,最经常使用的是schedul ...

  9. Linux时间子系统之六:高精度定时器(HRTIMER)的原理和实现

    转自:http://blog.csdn.net/droidphone/article/details/8074892 上一篇文章,我介绍了传统的低分辨率定时器的实现原理.而随着内核的不断演进,大牛们已 ...

  10. java的timertask_Java 定时器(Timer,TimerTask)详解及实例代码

    Java 定时器 在JAVA中实现定时器功能要用的二个类是Timer,TimerTask Timer类是用来执行任务的类,它接受一个TimerTask做参数 Timer有两种执行任务的模式,最常用的是 ...

最新文章

  1. Verilog语言中如何将memory型变量转换为普通变量
  2. 【字节网盘】emlog版收录导航主题模板
  3. Cocos2dx 小技巧(十五)话说ScrollView的delegate实现过程
  4. [转载] Java——System.exit()用法及个人理解
  5. [转载] 了解Node.js-to-Angular 套件组件
  6. java继承的范例_Java范例中的继承
  7. liunx安装Lamp
  8. C++ 柔性数组(转载)
  9. 下载DirectX 9 SDK开发包
  10. 感性电路电流计算_三相交流电怎么计算电功率?三相交流电功率计算公式
  11. 【机器人学习】平台并联机构matlab逆解
  12. Methods of integrating data to uncover genotype–phenotype interactions 翻译
  13. 双线macd指标参数最佳设置_一文讲透双线MACD指标及其实战运用
  14. JS实现复制页面文字弹出消息提醒/在sweetalert(swal)弹出窗插件中加入html代码
  15. arduino 版 PID 算法模板(程序可直接套模板实用)
  16. Android应用广告过滤几种方式
  17. linux php-fpm 配置文件,linux下php-fpm开启与关闭方法
  18. 指纹识别综述(1): 导论
  19. 室内定位技术:分类、方法与应用综述
  20. 计算机缩写术语完全介绍 By 001pc @ 1997.10.1-2004-6-12

热门文章

  1. Flash mx 课程指导大纲
  2. 基于matlab的暴雨强度公式参数推求,小样本流域降雨强度公式和设计降雨分布的推求方法...
  3. 西北工业大学生态环境学院张文宇课题组博士后招聘启事
  4. android中获取 bitmap 像素的颜色 之吸管取色功能
  5. Unity编辑器扩展工具Shader Forge和Behavior Designer(行为树)和 Cinema Director
  6. 河海大学计算机考研资料汇总
  7. Chrome插件-JSONView
  8. 如何在 Windows 操作系统中使用 Office 模板?
  9. STM32通过BC28用mqtt协议连接onenet及simulate-device的使用
  10. 怎样在计算机硬盘里新建文件,高手教你轻松新建文件夹