ThreadPoolTaskScheduler实现定时任务

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实现定时任务的更多相关文章
- SpringBoot中并发定时任务的实现、动态定时任务的实现(看这一篇就够了)
原创不易,如需转载,请注明出处https://www.cnblogs.com/baixianlong/p/10659045.html,否则将追究法律责任!!! 一.在JAVA开发领域,目前可以通过以下 ...
- Spring Boot 创建动态定时任务
1,日期格式转换 //定时任务格式转换public static String convertCronTime(Date jobDate){ //https://blog.csdn.net/qq_39 ...
- spring定时任务ThreadPoolTaskScheduler使用注意事项之线程池大小
背景 最近小伙伴解决了一个工单,描述为"手工推送案件无法推,提示token失效",当前工单状态为待关闭,解决方案为"东软接口不稳定造成的,东软的接口恢复正常后,问题解决& ...
- 使用spring的@Scheduled注解执行定时任务,启动项目不输出警告
在applicationContext.xml中添加: xmlns:task="http://www.springframework.org/schema/task" xsi:sc ...
- spring 定时任务 taskScheduler详解
spring 3.0版本后,自带了一个定时任务工具,而且使用简单方便,不用配置文件,可以动态改变执行状态.也可以使用cron表达式设置定时任务. 被执行的类要实现Runnable接口 TaskSche ...
- 定时任务schedule(spring boot )
1. 定时任务实现方式:SpringBoot自带的Scheduled,可以将它看成一个轻量级的Quartz,而且使用起来比Quartz简单许多,本文主要介绍. 执行方式:单线程(串行)多线程(并行) ...
- Java 定时任务的几种实现方式
JAVA实现定时任务的几种方式 @(JAVA)[spring|quartz|定时器] 近期项目开发中需要动态的添加定时任务,比如在某个活动结束时,自动生成获奖名单,导出excel等,此类任务由于活动 ...
- java 定时任务多线程处理
@Configuration@EnableSchedulingpublic class ScheduleConfig implements SchedulingConfigurer, AsyncCon ...
- SpringBoot(十三):springboot2.0.2定时任务
使用定义任务: 第一步:启用定时任务第二步:配置定时器资源等第三步:定义定时任务并指定触发规则 1)启动类启用定时任务 在springboot入口类上添加注解@EnableScheduling即可. ...
随机推荐
- 浅析Java中的线程池
Java中的线程池 几乎所有需要异步或并发执行任务的程序都可以使用线程池,开发过程中合理使用线程池能够带来以下三个好处: 降低资源消耗 提高响应速度 提高线程的可管理性 1. 线程池的实现原理 当我们 ...
- gin访问和使用数据库
package main import ( "database/sql" "fmt" _ "github.com/go-sql-driver/mysq ...
- Sping简介
SSH:Struct2 + Spring +Hibernate SSM:SpringMVC + Spring + Mybatis 优点 1,Sping是一个开源的免费的框架(容器) 2,Spirng是 ...
- ZooKeeper 授权访问
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件.它是一个为分布式应用提供一致性服务的软件,提供的功 ...
- 使用pybind11为Python编写C++扩展(一)配置篇:Build(编译和链接)
目录 Setuptools CMake 最后决定选用pybind11,理由如下: 比python原生的C API看起来人性多了 我的C++代码不是现成的,需要一定的C++开发工作量,所以感觉cytho ...
- 如何在pyqt中实现窗口磨砂效果
磨砂效果的实现思路 这两周一直在思考怎么在pyqt上实现窗口磨砂效果,网上搜了一圈,全都是 C++ 的实现方法.正好今天查python的官方文档的时候看到了 ctypes 里面的 HWND,想想倒不如 ...
- 物理CPU,物理核,逻辑CPU,虚拟CPU(vCPU)区别 (转)
在做虚拟化时候,遇到划分CPU的问题,因此考虑到CPU不知道具体怎么划分,查询一些资料后就写成本文. a. 物理CPU:物理CPU是相对于虚拟CPU而言的概念,指实际存在的处理器,就是我们可以看的见, ...
- array_multisort array_merge 排序
前段时间遇到一个排序问题,大致是这样的:$demo = array( 0 => array( 'name' ...
- HDU3315 费用流
为了不让颓影响到学习= = (主要是颓得不想敲代码) 所以,决定在OJ上随便挑一题,能搞便搞,不会就找题解,扒过来,认真研究......(比如这题 原帖:http://m.blog.csdn.net/ ...
- 手势仿QQ侧滑---秀清
// // SlideViewController.h // qqcehua // // Created by 张秀清 on 15/5/25. // Copyright (c) 2015年 张秀清. ...