TimerTask.java
package cn.hk.test; import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Timer;
public class TimerTask extends java.util.TimerTask {
//执行的类
private Class clazz;
//执行的类中的方法
private String method;
//执行的时间,只是这个时间没有spring中的cronExpression表达式强大
private Date executeDate;
//加入所有的类
private List<Class> clazzs=null;
//所有类中的方法
private List<String> methods=null;
//所有执行的时间列表
private List<Date> executeDates=null;
private static Timer timer=new Timer();
public TimerTask(Class clazz,String method,Date executeDate){
instances();
clazzs.add(clazz);
methods.add(method);
executeDates.add(executeDate);
}
private TimerTask(){}
public void start(){
System.out.println(executeDates.get(0));
Date date=new Date(System.currentTimeMillis());
//只有在当前的时间之前的才会执行,因为默认的Timer中的schedule的方法是会在时间已经过了也会执行的
if(date.before(executeDates.get(0))){
timer.schedule(this, executeDates.get(0));
}
}
/**
* 最终运行的方法
*/
public void run(){
if(equalsList()){
for( int i=0;i<clazzs.size();i++){
//得到对象
try {
Class clazz=clazzs.get(i);
String strMethod=methods.get(i);
Date executeDate=executeDates.get(i);
if(clazz!=null&&strMethod!=null&&executeDate!=null){
clazz=clazzs.get(i).newInstance().getClass();
Method method=clazz.getMethod(methods.get(i), null);
System.out.println(method.invoke(clazz.newInstance(),null));
}
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
/**
* 停止所有的方法
*/
public void stop(){
clazzs.clear();
methods.clear();
executeDates.clear();
}
private void instances(){
clazzs=new ArrayList<Class>();
methods=new ArrayList<String>();
executeDates=new ArrayList<Date>();
}
//判断集合中的数据是否是一样多的
private boolean equalsList(){
if(clazzs!=null&&methods!=null&&executeDates!=null){
if((clazzs.size()==methods.size())?(methods.size()==executeDates.size())?true:false:false){
return true;
}
}
return false;
}
private void addProp(Class clazz,String method,Date executeDate){
if(clazz!=null&&method!=null&&executeDate!=null){
clazzs.add(clazz);
methods.add(method);
executeDates.add(executeDate);
}
}
}
StartTask.java
package cn.hk.test;
import java.text.ParseException;
import java.text.SimpleDateFormat;
public class StartTask {
public static void main(String[] args) throws InterruptedException, ParseException {
cn.hk.test.TimerTask timerTask=new cn.hk.test.TimerTask(StartTask.class,"show",format.parse("2012-7-11 10:30:01"));
timerTask.start();
timerTask=new cn.hk.test.TimerTask(StartTask.class,"show",format.parse("2012-7-11 10:30:04"));
timerTask.start();
}
public void show(){;}
}
分享到:
相关推荐
在IT行业中,Spring框架是Java开发中的重要工具,它提供了丰富的功能来简化应用程序的构建。而Quartz则是流行的任务调度库,用于创建和管理定时任务。这篇博客“Spring Quartz 定时器”很可能是探讨如何将Quartz集成...
Quartz是一个功能强大的开源作业调度框架,而Spring则是一个广泛使用的Java企业级应用开发框架。两者的结合能够提供灵活且稳定的定时任务管理。 首先,要理解Spring整合Quartz的基本步骤: 1. **引入依赖**:在...
Quartz是一款广泛应用于Java环境中的开源任务调度框架,它允许开发者定义定时任务并灵活地进行调度。本项目主要探讨如何在运行时动态修改Quartz定时任务的CronExpression,即cron表达式,来改变任务的执行时间。 ...
Spring Cloud Data Flow和Quartz等库提供了分布式定时任务的解决方案,能够协调多个节点上的任务执行。 通过这些知识点,我们可以创建一个健壮且灵活的定时任务系统,满足项目中的各种需求。结合Spring的其他特性,...
在Java开发中,Spring框架提供了一种方便的方式来创建和管理定时任务。本篇文章将详细介绍如何在Spring中实现定时任务,并给出具体的代码示例。 首先,我们需要一个执行定时任务的类,例如`TaskJob`。这个类通常...
《Spring Boot实战派》源码提供了丰富的学习材料,旨在帮助开发者深入理解并熟练掌握Spring Boot这一流行的Java后端开发框架。Spring Boot简化了Spring应用程序的初始设置和配置,使得开发人员能够快速构建可运行的...
Quartz是Java平台上的一个开源作业调度框架,它允许开发者安排任务执行,而Spring Boot则是一个简化Spring应用开发的框架。这个压缩包很可能是为了展示如何在Spring Boot应用中配置和使用Quartz来实现定时任务。 ...
- **任务调度**:Spring Task或Quartz等工具可用于定时执行评测任务,如批量处理待评测的代码。 **系统架构** 在这个系统中,Web服务器接收用户的程序提交,将它们发送到评测机进行处理。评测机完成编译、运行和...
滴滴打车Java项目是一个基于Javaweb技术的模拟应用,旨在通过SSH(Spring、Struts2、Hibernate)三大框架的集成,实现类似滴滴出行的实际功能。SSH框架是Java领域中常用的MVC(模型-视图-控制器)架构模式的实现,...
这个jar文件包含支持缓存Cache(ehcache)、JCA、JMX、邮件服务(Java Mail、COS Mail)、任务计划Scheduling(Timer、Quartz)方面的类。 (11) spring-web.jar 这个jar文件包含Web应用开发时,用到Spring框架时...
此外,可以引入Quartz或Spring Task等定时任务框架,定期检查库存状态,自动触发订货或提醒补货。 在系统设计上,采用模块化架构,将业务逻辑分为不同的微服务,如员工管理服务、客户管理服务、库存管理服务等。每...
这个jar文件包含支持缓存Cache(ehcache)、JCA、JMX、邮件服务(Java Mail、COS Mail)、任务计划Scheduling(Timer、Quartz)方面的类。 (11) spring-web.jar 这个jar文件包含Web应用开发时,用到Spring框架...
Spring支持与许多其他流行框架的集成,如Hibernate、Struts、Quartz等,使得开发者可以利用这些框架的功能,同时享受Spring带来的便利。 总的来说,Spring Framework 3.1.4.RELEASE是一个强大且全面的Java开发工具...
10. **测试与调试**: 对于定时任务的测试,通常需要模拟时间跳转,如使用`TestScheduler`(在Quartz中)或自定义`Clock`(在Spring中)。这可以帮助验证任务是否按预期的时间表运行。 以上就是关于“java scheduler...
8. **集成其他技术**:Spring支持与各种其他框架和技术的集成,如JSF、Struts、EJB、JMS、Quartz等,它提供了一种统一的方式来管理这些组件的依赖和生命周期。 9. **测试支持**:Spring提供了丰富的测试工具,包括...
10. **spring-context-support-4.3.17.RELEASE.jar**:上下文支持模块,提供了对各种第三方库如Quartz定时任务、邮件服务、缓存(如Ehcache)的支持,扩展了Spring上下文的功能。 通过这些jar文件,开发者可以轻松...
在单元测试中,可以使用`@TestPropertySource`注解和`spring.scheduledTasks`属性来模拟定时任务的执行,以便在测试环境中验证任务逻辑。 8. **日志与监控**: 为了跟踪任务的执行情况,可以在任务方法中添加日志...
这个功能强大的工具使得开发者无需依赖外部任务调度库(如Quartz或Cron),就能在Spring环境中轻松实现定时任务。 ### 1. Spring Task基础 Spring Task提供了两种主要的方式来创建定时任务:`@Scheduled`注解和`...
4. **spring-context-support**: 支持与第三方库如Quartz、JMS的集成。 5. **spring-expression**: 引入了强大的表达式语言(SpEL)用于运行时查询和操作对象属性。 6. **spring-aop**: 面向切面编程的支持。 7. **...