@Scheduled实现定时任务(实现多个定时任务并发执行)

2023-11-02

@Scheduled实现定时任务

使用@Scheduled注解需要springboot启动类上添加注解@EnableScheduling

@SpringBootApplication
@MapperScan(basePackages = {"com.xxx.*.mapper"})
@EnableScheduling
public class PictureProcessingAdminApplication{
	public static void main(String[] args) {
		SpringApplication.run(PictureProcessingAdminApplication.class, args);
	}
}

同个任务的同步执行

同步执行:等待上一次定时任务结束后才开始cron表达式时间匹配

注意:同步任务所在类必须被spring扫描所管理才行,所以需要添加@Component注解。
很多人明明在方法在添加了@Scheduled注解,但是不生效都是这个原因,定时任务所在类没有被spring管理。

@Component
public class taskTest {

    @Scheduled(cron = "0 */1 * * * ?")
    public void task1(){
        try {
            System.out.println("任务1执行:" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(System.currentTimeMillis())));
            Thread.sleep(65000);
            System.out.println("任务1结束:" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(System.currentTimeMillis())));
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

同个任务的并发执行

相对同步执行来说,定时任务方法头部增加@Async即可实现并发执行,也就是严格按照cron表达式进行时间匹配执行,无需等待上一次任务执行结束。

@Component
public class taskTest {

    @Async
    @Scheduled(cron = "0 */1 * * * ?")
    public void task1(){
        try {
            System.out.println("任务1执行:" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(System.currentTimeMillis())));
            Thread.sleep(65000);
            System.out.println("任务1结束:" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(System.currentTimeMillis())));
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

多个任务的同步执行

任务使用@Scheduled
然后最重要的是,需要将springboot维护的ThreadPoolTaskScheduler定时任务线程池的长度设置为大于定时任务个数的值。然后ThreadPoolTaskScheduler默认长度为1。所以默认只有一个定时任务在跑。

源码如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

所以,需要将ThreadPoolTaskScheduler的长度修改即可,在项目启动时,设置长度,替换原本springboot管理的bean即可。

@Component
public class TaskSchedulerConfig {
 
	@Bean
	public ThreadPoolTaskScheduler threadPoolTaskScheduler(){
		ThreadPoolTaskScheduler threadPoolTaskScheduler = new ThreadPoolTaskScheduler();
		threadPoolTaskScheduler.setPoolSize(10);
		return threadPoolTaskScheduler;
	}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

@Scheduled实现定时任务(实现多个定时任务并发执行) 的相关文章

  • Java中如何动态添加charsequence[]中的数据?

    初始化的一种方法charsequence is charsequence item abc def 但我不想以这种方式初始化它 有人可以建议其他方式吗 比如我们初始化的方式string arrays 首先 修复变量声明 charsequen
  • Java泛型 - 实现像map这样的高阶函数

    我决定用 Java 编写一些常见的高阶函数 map filter reduce 等 这些函数通过泛型实现类型安全 但我在一个特定函数中遇到通配符匹配问题 为了完整起见 函子接口是这样的 The interface containing th
  • 在java中将RFC3339 DateTime转换为Date [重复]

    这个问题在这里已经有答案了 如何转换RFC 3339 https www rfc editor org rfc rfc3339java 中的 com google api client util DateTime 到 DateTime 例如
  • java本地时间格式不带年份

    我喜欢将本地时间格式格式化为不带年份的字符串 目前我可以显示包含年份的本地格式 java text DateFormat df java text DateFormat getDateInstance java text DateForma
  • Junit Mockito 测试一切

    我现在正在寻找更多时间但没有结果 请帮忙 这是我要测试的课程 public class DBSelectSchema extends Database private static final Logger LOG Logger getLo
  • 使用Java获取CSS文件中图像的URL?

    我正在尝试使用 Java 获取远程 CSS 文件中图像 所有 MIME 类型 的 URL 我正在使用 jsoup 来获取 css 的 URL 经过无数个小时的观看CSS解析器 http cssparser sourceforge net 由
  • 术语“引用”的起源,如“通过引用传递”

    Java C 语言律师喜欢说他们的语言按值传递引用 这意味着 引用 是调用函数时复制的对象指针 同时 在 C 中 以及 Perl 和 PHP 中更动态的形式 引用是其他名称 或动态情况下的运行时值 的别名 我对这里的词源感兴趣 参考 一词的
  • Java 相当于 Perl 的 s/// 运算符?

    我有一些代码正在从 Perl 转换为 Java 它大量使用了正则表达式 包括s 操作员 我已经使用 Perl 很长时间了 但仍然习惯 Java 的做事方式 特别是 字符串似乎更难使用 有谁知道或有一个完全实现的Java函数s 这样它就可以处
  • Java 中支持多少维数组,例如 a[1][1][1][1]....[1]? [复制]

    这个问题在这里已经有答案了 Java支持多少维数组a 1 1 1 1 1 我可以为数组声明无限数量的维度吗 数组维数限制为 255 有趣的是 JLS定义的Java编程语言没有这样的限制 但是你可以在JVM规范 http docs oracl
  • 解密 TLS 1.2 AES-GCM 数据包

    我正在开发一个 Java 程序来解密TLS 1 2正在使用的会话TLS RSA WITH AES 128 GCM SHA256密码 我使用wireshark 录制了一个测试会话 这大师秘密是已知的 No Time Protocol Leng
  • a4j:commandLink 重新渲染后停止工作

    我创建了这个测试用例来隔离我的问题 一旦轮询执行 ajax 更新 a4j commandLink 操作就不会执行 如果我们在轮询重新渲染之前关闭 modalPanel 则会执行它 有什么建议吗 提前致谢 测试 xhtml
  • Spring Boot 多部分文件始终为 null

    我正在使用 Spring Boot version 1 4 0 RC1 和 Spring Boot Stormpath 1 0 2 我正在尝试使用分段文件上传 但控制器中的 MultipartFile 始终为空 当我使用 RequestPa
  • 如何找到 Oracle 数据库的 URL?

    如何找到 Oracle 数据库的 URL 和端口 Example jdbc oracle thin host port dbName 用户名 密码 是否有我可以查看的 SQL 命令或日志 配置文件 对于甲骨文来说 有一个tnsnames o
  • Java 空值检查

    我有一个thread1 if object null object play 和另一个thread2可以写null into object随时参考 我将同时运行这些线程 我知道thread2可以重写object后参考null检查并会抛出Nu
  • 如何在Java中通过反射调用代理(Spring AOP)上的方法?

    一个接口 public interface Manager Object read Long id 实现该接口的类 Transactional Public class ManagerImpl implements Manager Over
  • 通过 ssh 发送命令并读取输出结果

    我有代码通过 ssh 连接到远程服务器并向其发送 2 个或更多命令 例如 cd export home ops bin和 viewlinkload time 20131205 19 但我没有看到命令执行 也没有收到结果 我需要获取服务器返回
  • 从数字列表中生成所有唯一对,n 选择 2

    我有一个元素列表 假设是整数 我需要进行所有可能的两对比较 我的方法是 O n 2 我想知道是否有更快的方法 这是我在java中的实现 public class Pair public int x y public Pair int x i
  • Jackson 的 ObjectMapper 和 SQL 中的 RowMapper

    我们正在使用对象映射器 当将 ObjectMapper 与 RowMapper 一起使用时 是否应该在每个 mapRow 内部 如下所示 声明它 还是在 mapRow 外部声明为类公共成员 我认为根据本文 它应该作为公共类成员在外部 我应该
  • 在java中打印阿拉伯字符串

    我试图在 java 中显示阿拉伯语文本 但它显示垃圾字符 示例 或有时在我打印时仅显示问号 我如何才能打印阿拉伯语 我听说它与unicode和UTF 8有关 这是我第一次使用语言 所以不知道 我正在使用 Eclipse Indigo IDE
  • 将 JSON 发送到 Spring MVC 控制器

    我正在尝试将 JSON 发送到 Spring MVC 控制器 在 Spring MVC 方面 一切都配置正确 下面是代码 但似乎没有运行

随机推荐

  • GAN实现MNIST

    GAN是生成对抗网络 具体的原理这里就不详解了 该博文简要实现了GAN的搭建 在MNIST数据集上使用 亲测100 可用 导入相应的代码库 import tensorflow as tf import numpy as np import
  • ubuntu系统将磁盘剩余容量扩到文件目录上

    操作系统ubuntu 20 04 6 live server amd64 磁盘现状 lsblk 查看磁盘信息 df h 显示存在的卷组信息 Free PE 还有58G 开始扩容 1 调整命令 参考 1 例如增大至220G lvextend
  • 【华为OD机试2023】找等值元素 C++ Java Python

    华为OD机试2023 找等值元素 C Java Python 前言 如果您在准备华为的面试 期间有想了解的可以私信我 我会尽可能帮您解答 也可以给您一些建议 本文解法非最优解 即非性能最优 不能保证通过率 Tips1 机试为ACM 模式 你
  • 第十二届蓝桥杯国赛

    刚进行完第十二届蓝桥杯国赛 说一下题目感想 这次是四道填空题 六道代码题 感觉这次出的题还比较对路 不像原来很难做出来 但是也有粗心做错的题 算法前面考的到不多 后面大题考的多 动态规划 深搜等 过几天出成绩 希望成绩可以稍微喜人点 第一题
  • Unity UI -- (5)增加基础按钮功能

    分析分析一些常见UI 良好的UI设计会清晰地和用户沟通 用户知道他们能和屏幕上哪些东西交互 哪些不能 如果他们进行了交互 他们也要清楚地知道交互是否成功 换句话说 UI要提供给用户很多反馈 我们可以来看看在Unity里或者在计算机上的任何应
  • “Error running ‘Tomcat 9.0‘: Address localhost:1099 is already in use”报错问题

    Error running Tomcat 9 0 Address localhost 1099 is already in use 报错问题 使用idea运行tomcat时左下方出现红色小方块提示问题 Error running Tomca
  • 系统测试设计的10种方法

    一 等价类划分 等价类的概念 等价类 某个输入域的子集合 在这个集合中 每一个输入条件都是等效 的 如果其中一个输入不能导致问题发生 那么集合中其它输入条件进行测试也不可能发现错误 有效等价类 合理的输入数据 指满足产品规格说明的输入数据
  • swagger接口需要权限验证解决方案

    目录 背景 解决方案 背景 当我们在使用s w a g g e r的情况下 经常会遇到需要授权或者请求带有token才可以访问接口 这里我们就是解决授权问题 解决方案 废话不多说 我们直接给出解决方案 具体代码如下 import org s
  • Linux 线程同步的三种方法

    线程的最大特点是资源的共享性 但资源共享中的同步问题是多线程编程的难点 linux下提供了多种方式来处理线程同步 最常用的是互斥锁 条件变量和信号量 一 互斥锁 mutex 通过锁机制实现线程间的同步 初始化锁 在Linux下 线程的互斥量
  • python小游戏——打砖块代码开源

    作者 小刘在这里 每天分享云计算网络运维课堂笔记 努力不一定有回报 但一定会有收获加油 一起努力 共赴美好人生 夕阳下 是最美的 绽放 愿所有的美好 再疫情结束后如约而至 目录 一 效果呈现 二 主代码 三 cfg 四 README 一 效
  • 【Linux】Linux系统下libevent库的安装

    1 首先进行libevent版本的下载 可以去libevent的官网进行下载 地址为 https libevent org 2 将下载的libevent拖拽到linux系统的桌面 3 在linux中进入到桌面 因为我们将这个库放在了桌面 c
  • Linux系统更改时区

    1 UTC和CST UTC 世界协调时 Universal Time Coordinated的缩写 CST 这个代号缩写 并不是一个统一标准 目前 可以同时代表如下 4 个不同版本的时区概念 要根据上下文语义加以区分 1 China Sta
  • circos-session 1 Lesson 11 Ideogram,Color,Scale,Order and Orientation

    data tracks manipulate what ideogram are displayed their order and orientation Filtering Ideograms with a prefix remove
  • linux常用目录

    原文地址 http os chinaunix net a2007 1227 974 000000974539 shtml vmlinuz 该目录中存放的是系统内核 bin 该目录中存放Linux的常用命令 在有的版本中是一些和根目录下相同的
  • nRF52832 — 连接指定name、UUID、addr的蓝牙设备

    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XX 作 者 文化人 XX 联系方式 XX 版权声明 原创文章 欢迎评论和转载 转载时能告诉我一声就最好了 XX 要
  • 回调函数中如何调用类中的非静态成员变量或非静态成员函数

    回调函数中调用类中的非静态成员变量或非静态成员函数 问题1 如何在类中封装回调函数 答 a 回调函数只能是全局的或是静态的 b 全局函数会破坏类的封装性 故不予采用 c 静态函数只能访问类的静态成员 不能访问类中非静态成员 问题2 如何让静
  • 基于SSM的小区物业管理系统(附源码+论文)

    介绍 基于JavaEE小区物业管理系统 项目采用MVC模式结合SSM框架进行实现 前端页面使用Bootstrap进行实现 功能 用户端 1 业主信息查询 2 房产信息查询 3 公告查询管理 4 收费管理 5 报修管理 6 修改用户密码 物业
  • 蓝桥杯 基础练习 矩阵乘法(Python)

    资源限制 内存限制 512 0MB C C 时间限制 1 0s Java时间限制 3 0s Python时间限制 5 0s 问题描述 给定一个N阶矩阵A 输出A的M次幂 M是非负整数 例如 A 1 2 3 4 A的2次幂 7 10 15 2
  • 面试题-HTTP/HTML/浏览器

    文章目录 1 说一下 http 和 https 2 tcp 三次握手 一句话概括 3 TCP 和 UDP 的区别 4 WebSocket 的实现和应用 5 HTTP 请求的方式 HEAD 方式 6 一个图片 url 访问后直接下载怎样实现
  • @Scheduled实现定时任务(实现多个定时任务并发执行)

    Scheduled实现定时任务 使用 Scheduled注解需要springboot启动类上添加注解 EnableScheduling SpringBootApplication MapperScan basePackages com xx