在使用 springmvc 中,一般的定时任务是使用 job 或者 quartz 或者timer来实现,但是使用它们的时候比较麻烦,会在 xml 文件中配置很多,

springboot 的定时任务比较简单。

1、在 application 启动类中使用 @EnableScheduling 注解开启定时任务,会自动扫描,相当于一个开关,把这个开关开完之后,那么只要在相应的任务类中做相应的任务,那么就会被 spring boot 容器扫描到,扫描到后,根据任务定义的时间

会自动运行

@SpringBootApplication
@EnableScheduling
public class SpringbootredisApplication { public static void main(String[] args) {
SpringApplication.run(SpringbootredisApplication.class, args);
} }

2 配置组件

package com.cxy.config;

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component; import java.util.Date; @Component
public class TaskTest {
@Scheduled(cron = "*/1 * * * * ?")
public void po(){
System.out.println(System.currentTimeMillis());
}
}

控制台输出

除了支持cron表达式之外还支持:

@Component
public class TaskTest {
// @Scheduled(cron = "*/1 * * * * ?")
// public void po(){
// System.out.println(System.currentTimeMillis());
// } @Scheduled(fixedRate = )
public void po(){
System.out.println(System.currentTimeMillis());
}
}

执行结果:

fixedRate: 上一次 启动时间点之后 X秒执行一次

fixedDelay: 上一次 结束时间点之后 每X秒执行一次

initialDelay: 第一次延迟 X秒执行,之后按照fixedRate的规则每X秒执行

但是springtask任务在分布式的时候会存在问题:部署多台服务之后,到底哪个服务器执行呢,那么就应该思考代码问题,不管不是timer,还是quatz等都是存在问题的,这种问题可以采用一下来执行:

1 可以选择代码分离进行单台部署,

2 可以选择redis分布式锁,让一台服务拿到相应的key之后去执行

3 使用zookeeper分布式锁获取单个锁,

如果别人问道这个问题,我们应该知道,清晰代码思路,确实我在之前项目是单台tomcat部署的,所有使用的是这个springtask作为定时任务,只是存在如果节点宕机之后就会出现

问题,所以可以去学习分布式任务进行整合,例如xxl-job

最新文章

  1. Centos 7 minimal install 无网络无ifconfig的解决
  2. 【原创】开源.NET排列组合组件KwCombinatorics使用(二)——排列生成
  3. HTML5 视频(一)
  4. react入门(4)
  5. web 打开子窗口提交数据或其他操作后 关闭子窗口且刷新父窗口实现
  6. Linux 下三种方式设置环境变量
  7. git tag查看、创建与删除
  8. 一个简单的web服务器
  9. meanshift和camshift
  10. Poco C++——HTTP的post请求和get请求
  11. 虚拟机装centos 桥接方式上网[转]
  12. jq选择器 第一部分
  13. Ice笔记-利用Ice::Application类简化Ice应用
  14. Ubuntu如何配置SSH免密登录
  15. destruct析构函数里操作文件出现的问题
  16. ABP学习之路--切换mysql数据库
  17. c++中的auto、const auto&
  18. AWS免费EC2
  19. 关于ACtion类利用file类型取得上传文件的内容,名字和内容类型
  20. bash:express:command not found

热门文章

  1. 第二章 深入分析Java I/O的工作机制(待续)
  2. node install error
  3. LinearLayout线性布局搭配权重属性的使用
  4. eclipse怎么查看class文件(eclipse安装反编译插件)
  5. 开发同事 Linux 实用基本操作
  6. wenfrom的简单控件和repeater控件
  7. SQl Server Tsql基本编程 ,循环语句 ,存储过程
  8. GNU Gettext
  9. DesertWind TopCoder - 1570
  10. web.xml中url-pattern匹配规则.RP