spring mvc定时器的使用
来源:互联网 发布:ubuntu登录密码忘记了 编辑:程序博客网 时间:2024/05/16 19:04
转载自:http://stevex.blog.51cto.com/4300375/1352026
最常见的JAVA定时器有JDK自带的Timer、ScheduledThreadExecutor以及第三方的Quartz,Timer自身有很多缺陷(如不支持多线程,多任务执行时会出现任务滞后执行,没有处理运行时异常可导致定时器异常终止等),实际上已经被JDK 5 提供的ScheduledThreadExecutor替代,ScheduledThreadExecutor基本解决了Timer的缺陷,但ScheduledThreadExecutor不够强大,它不能支持像Cron Job这样复杂的调度。Quartz则是名副其实的工业标准,支持各种各样复杂的任务调度,支持JTA事务管理、支持集群等,可见Quartz很强大的同时也变得有点复杂,有点“重”。
Spring 从3开始自己提供了一个比较Quartz相对轻量的定时器框架,支持一般定时任务和Cron 表达式定义的定时任务,支持异步任务调度执行,同时提供Annotation配置方式和task XML namespace来支持定时任务的调度配置,相对Quartz配置大大简化,开发更加简单。
Annotation实现方式:在具体干活的函数上加标注@Scheduled:
package com.myco.tasks;@Service("myTask")
public class MyTask {
//A cron-like expression, extending the usual UN*X definition to include triggers on the second as well as minute, hour, day of month, month and day of week.
//@scheduled(cron)
//Execute the annotated method with a fixed period between the end of the last invocation and the start of the next.
//@scheduled(fixedDelay)
//Execute the annotated method with a fixed period between invocations.
@Scheduled(fixedRate=1000)
public void work() {
// task execution logic
}
}
配置文件增加task:annotation-driven元素:
<task:scheduler id="myScheduler" pool-size="10" /><task:annotation-driven scheduler="myScheduler" />
XML配置实现方式(work方法的@scheduled标注可以去掉):
fixed-delay方式
<task:scheduler id="myScheduler" pool-size="10" /><task:scheduled-tasks scheduler="myScheduler">
<task:scheduled ref="myTask" method="work"
fixed-delay="10000" />
</task:scheduled-tasks>
Cron 表达式方式
<task:scheduled-tasks><task:scheduled ref="myTask" method="work" cron="3/10 * * * * ?"/>
</task:scheduled-tasks>
异步作业调度:在干活的函数上加@Async标注
@Componentpublic class AsyncWorker implements Worker {
@Async
public void work(int i) {
String threadName = Thread.currentThread().getName();
System.out.println(" " + threadName + " beginning work on " + i);
try {
Thread.sleep(5000); // simulates work
}
catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
System.out.println(" " + threadName + " completed work on " + i);
}
}
配置文件中增加<task:annotation-driven />
0 0
- spring mvc定时器的使用
- Spring MVC使用Cron表达式的定时器
- spring定时器的使用
- Spring定时器的使用
- Spring定时器的使用
- Spring定时器的使用
- Spring定时器的使用
- Spring定时器的使用
- spring 定时器的使用
- Spring定时器的使用
- Spring定时器的使用
- Spring定时器的使用
- spring定时器的使用
- Spring MVC定时器
- Spring+Quartz定时器的使用
- spring定时器的使用详解
- Spring定时器的简单使用
- Spring中定时器的使用
- JMeter录制脚本方法
- Android中提高后台服务进程优先级的方法
- Performance Optimization of UITableView
- yield(C# 参考)
- AngularJS入门(7)-Angular过滤器
- spring mvc定时器的使用
- hadoop-2.7.3源码编译
- js提交数组对象备份
- 接口
- linux-C编程-进程间通信
- 测高卫星Jason2 Handbook翻译(一):Introduction
- weblog启动报错
- nginx跨域访问字体
- CentOS 配置SSH免密码登陆