spring 定时任务 taskScheduler详解
来源:互联网 发布:女士牛仔裤 淘宝网 编辑:程序博客网 时间:2024/06/05 10:38
spring 3.0版本后,自带了一个定时任务工具,而且使用简单方便,不用配置文件,可以动态改变执行状态。也可以使用cron表达式设置定时任务。
1、被执行的类要实现Runnable接口
2、TaskScheduler 任务调度接口
TaskScheduler是一个接口
TaskScheduler接口下定义了6个方法
schedule(Runnable task, Trigger trigger);
指定一个触发器执行定时任务。可以使用CronTrigger来指定Cron表达式,执行定时任务CronTrigger t = new CronTrigger("0 0 10,14,16 * * ?"); taskScheduler.schedule(this, t);
- schedule(Runnable task, Date startTime);
指定一个具体时间点执行定时任务,可以动态的指定时间,开启任务。只执行一次。(比Timer好用多了。早发现这接口就好了。。。) - scheduleAtFixedRate(Runnable task, long period);
立即执行,循环任务,指定一个执行周期(毫秒计时)
PS:不管上一个周期是否执行完,到时间下个周期就开始执行 - scheduleAtFixedRate(Runnable task, Date startTime, long period);
指定时间开始执行,循环任务,指定一个间隔周期(毫秒计时)
PS:不管上一个周期是否执行完,到时间下个周期就开始执行 - scheduleWithFixedDelay(Runnable task, long delay);
立即执行,循环任务,指定一个间隔周期(毫秒计时)
PS:上一个周期执行完,等待delay时间,下个周期开始执行 scheduleWithFixedDelay(Runnable task, Date startTime, long delay);
指定时间开始执行,循环任务,指定一个间隔周期(毫秒计时)
PS:上一个周期执行完,等待delay时间,下个周期开始执行
3、TaskScheduler下有五个实现类
ConcurrentTaskScheduler
以当前线程执行任务。如果任务简单,可以直接使用这个类来执行。快捷方便。
PS:这是单线程运行public class LocTest implements Runnable { private ConcurrentTaskScheduler tpts = new ConcurrentTaskScheduler(); private void start() {tpts.schedule(this, new Date()); } public void run() {Thread ct = Thread.currentThread();System.out.println("current id:"+ct.getId());System.out.println("current name:"+ct.getName()); } public static void main(String[] args) {new LocTest().start(); }}
- DefaultManagedTaskScheduler
以当前线程执行任务,这是ConcurrentTaskScheduler的子类,添加了JNDI的支持。和ConcurrentTaskScheduler一样的用法,需要使用JNDI可以单独设置 - ThreadPoolTaskScheduler
TaskScheduler接口的默认实现类,多线程定时任务执行。可以设置执行线程池数(默认一个线程)。
PS:- 使用前必须得先调用initialize()【初始化方法】
有shutDown()方法,执行完后可以关闭线程
public class LocTest implements Runnable {private ThreadPoolTaskScheduler taskScheduler = new ThreadPoolTaskScheduler();private void start() {taskScheduler.setPoolSize(10);//必须得先初始化,才能使用taskScheduler.initialize();taskScheduler.schedule(this, new Date());}public void run() {Thread ct = Thread.currentThread();System.out.println("current id:"+ct.getId());System.out.println("current name:"+ct.getName());}public static void main(String[] args) {new LocTest().start();}}
TimerManagerTaskScheduler
这个没有使用到,就没具体了解,有时间再补充。有了解的欢迎来补充。
0 0
- spring 定时任务 taskScheduler详解
- spring TaskScheduler 来实现定时任务
- Spring定时任务 Could not find default TaskScheduler bean异常处理
- Spring定时任务 Could not find default TaskScheduler bean异常处理
- spring定时任务配置详解
- java Spring定时任务详解
- Spring 定时任务scheduled详解
- spring @scheduled 定时任务详解
- C#+TaskScheduler(定时任务)实现定时自动下载
- Quartz定时任务,Quartz Spring定时任务,spring多个定时任务Quartz配置,示例,详解
- spring定时任务的实现详解
- Spring定时任务配置详解 quartz cronExpression
- Spring Quartz 定时任务cronexpression详解
- spring定时任务 Cron表达式配置详解
- spring定时任务详解(@Scheduled注解)
- spring定时任务详解(@Scheduled注解)
- 两种spring定时任务详解
- spring定时任务详解(@Scheduled注解)
- hdu 2037 今年暑假不AC
- CPU通过SMC控制CPLD
- 《道德经》第十六章
- 关于Keras 2.0版本运行demo出错的问题
- JS——封装一个可以连缀的DOM库
- spring 定时任务 taskScheduler详解
- cvc-complex-type.2.4.a: Invalid content was found starting with element 'async-supported'.
- LUNIX LDAP的配置信息
- DI v6.2,DI运行时间间隔以及效率问题咨询
- flex弹性布局
- SQL Server 触发器
- 解决eclipse+maven src/main/resources目录new folder实际为package的方法
- 安装memcached模块
- Creating custom data graphics in Visio