public class SchedulingTask {
private static ThreadPoolTaskScheduler threadPoolTaskScheduler;
static {
threadPoolTaskScheduler = new ThreadPoolTaskScheduler();
threadPoolTaskScheduler.setThreadNamePrefix("MySchedulingTask-");
threadPoolTaskScheduler.setPoolSize(5);
threadPoolTaskScheduler.initialize();
} private Runnable task; private ScheduledFuture<?> future; private String cronStr = ""; //定时任务
public SchedulingTask() {}
public SchedulingTask(Runnable task) {
this.task = task;
}
public SchedulingTask(Runnable task, String cronStr) {
this.task = task;
this.cronStr = cronStr;
} //启动定时任务
public ScheduledFuture<?> startCron() {
future = threadPoolTaskScheduler.schedule(task, new Trigger() {
@Override
public Date nextExecutionTime(TriggerContext triggerContext) {
return new CronTrigger(cronStr).nextExecutionTime(triggerContext);
}
});
return future;
} //取消定时任务
public void stopCron() {
if (future != null) {
future.cancel(true);
}
} //修改定时任务
public void changeCron(String cronStr) {
this.cronStr = cronStr;
stopCron();
startCron();
} //getter setter
public Runnable getTask() {
return task;
} public ScheduledFuture<?> getFuture() {
return future;
} public String getCronStr() {
return cronStr;
} public void setTask(Runnable task) {
this.task = task;
} public void setCronStr(String cronStr) {
this.cronStr = cronStr;
} public static void setThreadPoolTaskScheduler(ThreadPoolTaskScheduler threadPoolTaskScheduler) {
SchedulingTask.threadPoolTaskScheduler = threadPoolTaskScheduler;
} //测试
// public class MyTask implements Runnable {
//
// @Override
// public void run() {
// SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSZ");
// System.out.println("running at " + format.format(new Date()));
// }
// }
}

cancel取消任务会发送中断信号到正在执行的线程,线程中可以使用Thread.interrupted()获取中断信号,线程中的Thread.sleep()会捕捉该中断异常。如果没有获取中断信号,线程会继续执行到结束

ThreadPoolTaskScheduler实现定时任务的更多相关文章

  1. SpringBoot中并发定时任务的实现、动态定时任务的实现(看这一篇就够了)

    原创不易,如需转载,请注明出处https://www.cnblogs.com/baixianlong/p/10659045.html,否则将追究法律责任!!! 一.在JAVA开发领域,目前可以通过以下 ...

  2. Spring Boot 创建动态定时任务

    1,日期格式转换 //定时任务格式转换public static String convertCronTime(Date jobDate){ //https://blog.csdn.net/qq_39 ...

  3. spring定时任务ThreadPoolTaskScheduler使用注意事项之线程池大小

    背景 最近小伙伴解决了一个工单,描述为"手工推送案件无法推,提示token失效",当前工单状态为待关闭,解决方案为"东软接口不稳定造成的,东软的接口恢复正常后,问题解决& ...

  4. 使用spring的@Scheduled注解执行定时任务,启动项目不输出警告

    在applicationContext.xml中添加: xmlns:task="http://www.springframework.org/schema/task" xsi:sc ...

  5. spring 定时任务 taskScheduler详解

    spring 3.0版本后,自带了一个定时任务工具,而且使用简单方便,不用配置文件,可以动态改变执行状态.也可以使用cron表达式设置定时任务. 被执行的类要实现Runnable接口 TaskSche ...

  6. 定时任务schedule(spring boot )

    1. 定时任务实现方式:SpringBoot自带的Scheduled,可以将它看成一个轻量级的Quartz,而且使用起来比Quartz简单许多,本文主要介绍. 执行方式:单线程(串行)多线程(并行) ...

  7. Java 定时任务的几种实现方式

    JAVA实现定时任务的几种方式 @(JAVA)[spring|quartz|定时器]  近期项目开发中需要动态的添加定时任务,比如在某个活动结束时,自动生成获奖名单,导出excel等,此类任务由于活动 ...

  8. java 定时任务多线程处理

    @Configuration@EnableSchedulingpublic class ScheduleConfig implements SchedulingConfigurer, AsyncCon ...

  9. SpringBoot(十三):springboot2.0.2定时任务

    使用定义任务: 第一步:启用定时任务第二步:配置定时器资源等第三步:定义定时任务并指定触发规则 1)启动类启用定时任务 在springboot入口类上添加注解@EnableScheduling即可. ...

随机推荐

  1. dataTaDataTable 详细教程

    DataTable 选项说明 特性 jQueryUI:true/false:控制是否使用jqueryUI样式,需要引入jQueryUI的CSS autoWidth:true/false:控制Datat ...

  2. Asp-Net-Core开发笔记:接口返回json对象出现套娃递归问题

    前言 看了下推送记录,一个月前,OK,我又变成月更了o(╯□╰)o,这绝对不行![○・`Д´・ ○] 所以今天来更新了 其实不是我懒得更新或者是太忙,其实是最近在写一篇很长的博客,一直没写完( Ĭ ^ ...

  3. Reset the default deployment target in Windows Phone Developer Tools

    楼主在更新Windows Phone 8.1 SDK之后遇到一个很烦人的问题,编译选择调试目标列表没有数据.正常情况下都会有一个模拟器列表和真机的选项.肯定又是Preview的bug,问题产生的原因暂 ...

  4. Hadoop支持LZO

    0. 环境准备 maven(下载安装,配置环境变量,修改sitting.xml加阿里云镜像)gcc-c++zlib-develautoconfautomakelibtool通过yum安装即可 yum ...

  5. 解决Vue3使用 Ant Design,出现多个Modal,全是黑屏,导致列表页看不见问题!

    尴尬问题 不报错,但是我看着就难受. 求知路上 请教了下强哥,强哥告诉我可能某个样式属性失效引起(无效),建议我F12看下样式. 接着,我F12狂看元素样式,查了一个小时未果,我真抓狂了. 都想明天问 ...

  6. Uwl.Admin.Core开源框架(二) 使用QuartzNet

    Uwl.Admin.Core中使用QuartzNet定时任务模块: 本文负责讲解RabbitMQ的使用 Uwl.Admin.Core使用的技术有: *.Async和Await 异步编程 *.Repos ...

  7. JS 选择结构语句与循环结构语句

    笔记整理自:廖雪峰老师的JS教程 选择结构 与Java使用一致. 需要注意的 JavaScript把null.undefined.0.NaN和空字符串''视为false,其他值一概视为true. 循环 ...

  8. 隐式意图&显示意图

    1 隐式意图     通过指定一组动作或者数据 开启activity   2 显示意图    通过指定具体包名和类名 开启activity       总结    (1)显示意图更加安全一些    ( ...

  9. uniapp 小程序全屏的实现

    通过设置navigationStyle, 即自定义导航实现背景全屏 参考文章:  微信小程序 自定义头部导航栏 navigationStyle 代码部分 在page.json中, 加入 "n ...

  10. Eclipse项目上的红叉解决方案

    Eclipse项目上存在红叉,但是又不影响运行,同时展开项目未指明任何内容出错,可以按如下步骤进行处理: 0.查看Problems视图,定位错误,发现处理之: 1.检查Build Path中的各个依赖 ...