当前位置: 首页 > news >正文

延时任务工具类

自定义工具类

package com.sxfoundation.task;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.task.TaskRejectedException;
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
import org.springframework.scheduling.support.TaskUtils;
import org.springframework.stereotype.Component;import java.util.concurrent.*;/*** @author valor.* @date 2019-07-25 16:30*/
@Component
public class JobManager {@Autowiredprivate ThreadPoolTaskScheduler taskScheduler;private static volatile JobManager jobManager;private JobManager() { }public static JobManager getInstance() {if (null == jobManager) {synchronized (JobManager.class) {if (null == jobManager) {jobManager = new JobManager();}}}return jobManager;}/*** 添加任务*/public void addJob(long startTime, Runnable task) {        
//        ScheduledExecutorService executor = Executors.newScheduledThreadPool(2);ScheduledExecutorService executor = this.taskScheduler.getScheduledExecutor();try {Runnable runnable = TaskUtils.decorateTaskWithErrorHandler(task, TaskUtils.LOG_AND_PROPAGATE_ERROR_HANDLER, false);ScheduledFuture<?> future = executor.schedule(runnable, startTime, TimeUnit.MILLISECONDS);} catch (RejectedExecutionException ex) {throw new TaskRejectedException("Executor [" + executor + "] did not accept task: " + task, ex);}}}

使用

private final JobManager jobManager;jobManager.addJob(EXPIRY_TIME, () -> {closeOrder(orderDon.getId(), user.getId());
});
http://www.lryc.cn/news/365751.html

相关文章:

  • springboot下载grpc编译文件,报错缺少protoc-gen-grpc-java:1.34.1:exe不存在
  • 【面试干货】 非关系型数据库(NoSQL)与 关系型数据库(RDBMS)的比较
  • JAVA学习-练习试用Java实现“简化路径”
  • STM32——ADC篇(ADC的使用)
  • (文章复现)基于主从博弈的售电商多元零售套餐设计与多级市场购电策略
  • 深度评价GPT-4o:探索人工智能的新里程碑
  • Linux命令篇(六):vi/vim专项
  • Java 还能不能继续搞了?
  • 【日记】遇到了一个很奇怪的大爷(845 字)
  • Python 机器学习 基础 之 处理文本数据 【处理文本数据/用字符串表示数据类型/将文本数据表示为词袋】的简单说明
  • GAT1399协议分析(10)--视频定义及解析
  • 【C语言】学生管理系统:完整模拟与实现
  • pypi 发布自己的包
  • 关闭windows11磁盘地址栏上的历史记录
  • DDS自动化测试落地方案 | 怿星科技携最新技术亮相是德科技年度盛会
  • 新品!和芯星通全系统全频高精度板卡UB9A0首发
  • Cognita RAG:模块化、易用与可扩展的开源框架
  • linux虚拟机免密登录配置
  • Qt_C++ RFID网络读卡器Socket Udp通讯示例源码
  • C++ 实现Python 列表list 的两种方法
  • vue3+ elementPlus PC端开发 遇到页面已进入就form校验了的问题
  • transformers DataCollator介绍
  • rust学习(字节数组转string)
  • Docker:技术架构演进
  • 汽车MCU虚拟化--对中断虚拟化的思考(2)
  • python的继承
  • 组件的注册和引用
  • 诊所如何赢得患者?做好这两点很关键!
  • Qwen2本地部署的实战教程
  • html+CSS+js部分基础运用15