首页 > 其他分享 >指定一个时间,完成定时任务

指定一个时间,完成定时任务

时间:2023-12-21 16:11:07浏览次数:21  
标签:name 指定 任务 taskTime Date 定时 public

有时候需要写一个定时触发的任务,例如设置公告定时发送

这里使用了spring中的定时任务类,很轻松的就完成了所需要的功能

1、定时任务,按照自己需求进行业务逻辑编写
/**
 * 定时任务
 * @Author:tzl
 * @Date:2023/12/20 17:47
 */
@Service
public class TaskService {

    public void executeTask(String name) {
        // 任务逻辑
        System.out.println(new Date());
        System.out.println(name + "发起的:  ---TaskService执行任务---");

    }
}
2、定时任务触发
/**
 * 定时任务触发
 * @Author:tzl
 * @Date:2023/12/20 17:48
 */
@Service
public class TaskSchedulingService {

    @Autowired
    private TaskService taskService;

    public void scheduleTask(Date taskTime,String name) {

        TaskScheduler taskScheduler = new ConcurrentTaskScheduler();

        taskScheduler.schedule(
                // 新建线程,执行任务
                () -> taskService.executeTask(name),
                // 任务触发时间
                taskTime
        );
    }
}

3、controller
/**
 * 定时任务请求
 * @Author:tzl
 * @Date:2023/12/20 17:49
 */
@RestController
public class TaskController {

    @Autowired
    private TaskSchedulingService schedulingService;

    @PostMapping("/scheduleTask")
    public ResponseEntity<String> scheduleTask(String taskTime, String name) {

        schedulingService.scheduleTask(getDate(taskTime),name);

        return ResponseEntity.ok("成功加入定时任务");
    }

    /**
     * 获取Date类型的时间
     * @param taskTime 任务启动时间
     * @return
     */
    private Date getDate(String taskTime) {
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        LocalDateTime dateTime = LocalDateTime.parse(taskTime, formatter);

        // 将LocalDateTime转换为Instant
        Instant instant = dateTime.atZone(ZoneId.systemDefault()).toInstant();

        // 从Instant创建Date
        Date date = Date.from(instant);
        return date;
    }
}
4、测试

发送请求,等待时间到达

测试成功!

标签:name,指定,任务,taskTime,Date,定时,public
From: https://www.cnblogs.com/yaya-sama/p/17919319.html

相关文章

  • git 下载指定文件夹的方法
    有时候一个项目非常大,特别像一些课程源码往往只需要下载一个文件夹。下面是用git下载指定目录的办法。这里以 https://gitee.com/dotnetmoyu/SimpleAdmin.git为例,只下载其中的web文件夹。  git命令如下://克隆元数据到本地,但不开始下载gitclone-nhttps://gitee.......
  • element-ui中的el-table底部固定指定行
    1,固定一行合计的情况  https://element.eleme.cn/#/zh-CN/component/table 直接使用官方文档上的summary-method  2,固定指定行或者多行  使用样式去固定例子:(计算列表数据的平均值,最大值,最小值并固定底部)1,计算数据的值protectedcalcData(data:any){......
  • 获取指定用户的所有待办流程
    SELECT (CASErequestlevelWHEN0THEN0WHEN1THEN1WHEN2THEN2ELSE-1END)ASrequestlevelorder, requestid, requestmark, createdate, createtime, creater, creatertype, workflowid, requestname, requestnamenew, STATUS, requestlevel, cur......
  • Jackson给给指定类设置序列化规则
    背景业务中需要对返回给APP端的数据进行特殊处理,包括:null值转换成空字符串日期(LocalDateTime)类型转换成时间戳金额根据用户Locale做格式化需要保证不影响内部其他服务的互相调用,因此让所有返回给APP的VO对象实现自定义的Vo接口,然后指定对Vo接口的类进行对应的转换。实现co......
  • 通过指定日期获取本周五,上周五 本周一上周一
    通过指定日期获取本周五,上周五 周一,周二,周三,周四,周五,周六,周日,对应0,1,2,3,4,5,6 --本周五SELECTDATE_FORMAT(DATE_SUB('2023-12-28',INTERVALWEEKDAY('2023-12-28')-4DAY),'%Y%m%d')ASmonday--上周五selectDATE_SUB(DATE_SUB('2023-12-21'......
  • WepApi TaskCanceledException A任务已取消--async+await的方案替代task.Wait()可有效
     在.netCore中httpClient添加配置超时时长也没用services.AddHttpClient("PPHttpClient",config=>{config.DefaultRequestHeaders.Add("Accept","*/*");config.DefaultRequestHeaders.Add("A......
  • 记录 | ubuntu升级/降级/安装指定版本的vim
    安装安装依赖:sudoaptinstallgitmakeclanglibtool-bin下载源码:gitclone--depth=1https://github.com/vim/vim.gitvim_sourcecdvim也可以从http://github.com/vim/vim/tags下载,在我写这篇笔记的时候最新的版本是v8.2.4995wget-chttps://github.com/vim/vim/archive/......
  • vue上传图片到指定文件夹
    vue代码<template><divclass="app-container"> <divclass="wenben"><el-upload:disabled="dis==0?true:false"class="upload-demo":action="uploadUrl":on-......
  • 使用druid数据源进行配置主库和从库,并实现定时拉取从库数据功能
    业务场景:Oracle数据库,项目中需要用到其它友商的数据,但是友商并未提供接口,而是直接提供了数据库,让我定时拉取同步其数据。使用技术:使用了druid数据源,并配置从库maven坐标<!--阿里数据库连接池--> <dependency><groupId>com.alibaba</groupId><ar......
  • 【go】Go (Golang) 语言-Golang 定时器Timer和Ticker、time.AfterFunc、time.NewTicke
    Golang定时器Timer和TickerGolang定时器包括:一次性定时器(Timer)和周期性定时器(Ticker)。编程中经常会通过timer和ticker、AfterFunc定时器NewTicker是设定每隔多长时间触发的,是连续触发,而计时器NewTimer是等待多长时间触发的,只触发一次,两者是不同的。等待时间函数AfterFunc是......