//每一个小时执行一次

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

public void saveDailyScoreScheduled() {

try {

logger.info("loadDeviceEvents start>>>>" + new Date());

loadDeviceEvents(ZonedDateTime.now().toEpochSecond(),null);

logger.info("loadDeviceEvents end >>>>" + new Date());

} catch (Exception e) {

logger.error("loadDeviceEvents error >>>>" ,e.toString());

}

}

?

/**

每两个小时执行一次

* Scheduled task

*/

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

public void loadMxpDeviceIssueStatusScheduled() {

try {

log.info("loadMxpDeviceIssueStatusScheduled start>>>>" + new Date());

loadMxpDeviceIssueStatus();

log.info("loadMxpDeviceIssueStatusScheduled end >>>>" + new Date());

} catch (Exception e) {

log.error("loadMxpDeviceIssueStatusScheduled error >>>>" ,e.toString());

}

}

?

具体知识:

http://blog.csdn.net/prisonbreak_/article/details/49180307

?

?

?

?

?

Spring配置文件xmlns加入

xmlns:task="http://www.springframework.org/schema/task"

xsi:schemaLocation中加入

http://www.springframework.org/schema/task

http://www.springframework.org/schema/task/spring-task-3.0.xsd"

spring扫描注解的配置

<context:component-scan base-package="com.imwoniu.*" />

任务扫描注解

<task:executor id="executor" pool-size="5" />

<task:scheduler id="scheduler" pool-size="10" />

<task:annotation-driven executor="executor" scheduler="scheduler" />

代码实现:

注解@Scheduled 可以作为一个触发源添加到一个方法中,例如,以下的方法将以一个固定延迟时间5秒钟调用一次执行,这个周期是以上一个调用任务的完成时间为基准,在上一个任务完成之后,5s后再次执行:

@Scheduled(fixedDelay = 5000)

public void doSomething() {

// something that should execute periodically

}

如果需要以固定速率执行,只要将注解中指定的属性名称改成fixedRate即可,以下方法将以一个固定速率5s来调用一次执行,这个周期是以上一个任务开始时间为基准,从上一任务开始执行后5s再次调用:

@Scheduled(fixedRate = 5000)

public void doSomething() {

// something that should execute periodically

}

?

如果简单的定期调度不能满足,那么cron表达式提供了可能

package com.imwoniu.task;

import org.springframework.scheduling.annotation.Scheduled;

import org.springframework.stereotype.Component;

@Component

public class TaskDemo {

@Scheduled(cron = "0 0 2 * * ?")  //每天凌晨两点执行

void doSomethingWith(){

logger.info("定时任务开始......");

long begin = System.currentTimeMillis();

//执行数据库操作了哦...

long end = System.currentTimeMillis();

logger.info("定时任务结束,共耗时:[" + (end-begin) / 1000 + "]秒");

}

}

以下内容摘自http://biaoming.iteye.com/blog/39532

一个cron表达式有至少6个(也可能7个)有空格分隔的时间元素。

按顺序依次为

秒(0~59)

分钟(0~59)

小时(0~23)

天(月)(0~31,但是你需要考虑你月的天数)

月(0~11)

天(星期)(1~7 1=SUN 或 SUN,MON,TUE,WED,THU,FRI,SAT)

7.年份(1970-2099)

其中每个元素可以是一个值(如6),一个连续区间(9-12),一个间隔时间(8-18/4)(/表示每隔4小时),一个列表(1,3,5),通配符。由于"月份中的日期"和"星期中的日期"这两个元素互斥的,必须要对其中一个设置?.

有些子表达式能包含一些范围或列表

例如:子表达式(天(星期))可以为 “MON-FRI”,“MON,WED,FRI”,“MON-WED,SAT”

“*”字符代表所有可能的值

因此,“*”在子表达式(月)里表示每个月的含义,“*”在子表达式(天(星期))表示星期的每一天

?

“/”字符用来指定数值的增量

例如:在子表达式(分钟)里的“0/15”表示从第0分钟开始,每15分钟

?????? ? 在子表达式(分钟)里的“3/20”表示从第3分钟开始,每20分钟(它和“3,23,43”)的含义一样

“?”字符仅被用于天(月)和天(星期)两个子表达式,表示不指定值

当2个子表达式其中之一被指定了值以后,为了避免冲突,需要将另一个子表达式的值设为“?”

?

“L” 字符仅被用于天(月)和天(星期)两个子表达式,它是单词“last”的缩写

但是它在两个子表达式里的含义是不同的。

在天(月)子表达式中,“L”表示一个月的最后一天

在天(星期)自表达式中,“L”表示一个星期的最后一天,也就是SAT

如果在“L”前有具体的内容,它就具有其他的含义了

例如:“6L”表示这个月的倒数第6天,“FRIL”表示这个月的最一个星期五

注意:在使用“L”参数时,不要指定列表或范围,因为这会导致问题

@Scheduled用法相关推荐

  1. Spring 定时任务@Scheduled用法

    基本用法 @Scheduled 由Spring定义,用于将方法设置为调度任务.如:方法每隔十秒钟被执行.方法在固定时间点被执行等 1. @Scheduled(fixedDelay = 1000)    ...

  2. Spring定时任务注解@Scheduled+@EnableAsync用法详解(简单说明+应用场景+demo源代码+执行过程分析)

    @Scheduled 由Spring定义,用于将方法设置为调度任务,可实现方法的周期或定时执行.想单独使用Scheduling,需引入spring-context这个依赖.spring-boot-st ...

  3. scheduled一分钟执行一次_Spring中使用@Scheduled创建定时任务

    Apple iPhone 11 (A2223) 128GB 黑色 移动联通电信4G手机 双卡双待 4999元包邮 去购买 > 一.定时任务触发条件 1.在 Application 启动类上添加: ...

  4. scheduled一分钟执行一次_Spring 中使用 @Scheduled 创建定时任务

    一.定时任务触发条件 1.在 Application 启动类上添加:@EnableScheduling 2.含定时方法的类上添加注解:@Component,该注解将定时任务类纳入 spring bea ...

  5. @Scheduled cron 定时任务表达式含义用法及* ?的区别

    ** @Scheduled cron 定时任务表达式含义用法及* ?的区别 ** cron格式:[秒数][分钟][小时][日期][月份][星期几][年份(可省略)] 关于[日期]与[星期几]的说明: ...

  6. springboot使用@Scheduled作定时任务详细用法

    springboot中quartz可以作定时任务,@Scheduled也可以 Spring Boot启动类标注@EnableScheduling,然后再开发一个服务类,: 测试简易定时任务: pack ...

  7. @Scheduled注解用法

    项目开发中,经常会遇到定时任务的场景,Spring提供了@Scheduled注解,方便进行定时任务的开发,要使用@Scheduled注解,首先需要在启动类添加@EnableScheduling,启用S ...

  8. Spring @Scheduled

    Spring @Scheduled是Spring计划任务的一种很简洁的实现.用来替代Quartz的方案. 要使用此特性,需要Spring3.2以上版本.用法: 1.在xml的配置中,需要加入: htt ...

  9. 如何用简单的词语和用法解释Katana和OWIN?

    本文翻译自:How to explain Katana and OWIN in simple words and uses? I have read many articles about the O ...

最新文章

  1. 用Thymeleaf在前台下拉列表取值
  2. Nginx+ThinkPHP不支持PathInfo的解决办法
  3. 解析EXCEL CSV格式文件的方法
  4. 我该如何维护一个烂项目?
  5. 360浏览器广告太多怎么办_360浏览器如何关闭广告自动推送
  6. 4 QM配置-质量计划配置-编辑缺陷类型的代码组和代码
  7. leetcode解题思路分析(一百二十八)1053 - 1078 题
  8. 区块链学习笔记25——总结
  9. 近六成女受访者赞成“中国男配不上中国女”
  10. opencv图像对比度
  11. 给重回正路的大二学生:戒急戒躁中前行
  12. 关于我的一些学习感悟
  13. go学习 --- go协程
  14. 什么是深度学习、强化学习
  15. 百度离线地图示例之三:矢量图
  16. java获取所有进程_Java 获取系统的进程列表
  17. 虚幻4脱坑指南——官网C++编程教程中第一人称设计游戏教程的若干问题及解决方法
  18. K8s 部署java项目
  19. 第八次作业—— 缺陷管理
  20. 服务器数据库监控系统,数据库监控系统

热门文章

  1. 5G核心网标准化进展及B5G演进初探
  2. virtualbox安装redflag
  3. 北京双线机房的一些分析
  4. WebMatrix (1)
  5. Windows Server 2019 安装oracle11g
  6. Linux下Android ADB驱动安装详解
  7. 推荐几个我经常浏览的前端博客
  8. linux ubuntu 下禁用/启用touchpad
  9. windows C++多线程(三):线程终止结束ExitThread与TerminateThread
  10. linux grep 排除_如何在Linux中排除Grep?