`
javaEEdevelop
  • 浏览: 876454 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

java 模拟spring的Quartz

 
阅读更多

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(){;}
}
 

 

分享到:
评论

相关推荐

    Spring Quartz 定时器

    在IT行业中,Spring框架是Java开发中的重要工具,它提供了丰富的功能来简化应用程序的构建。而Quartz则是流行的任务调度库,用于创建和管理定时任务。这篇博客“Spring Quartz 定时器”很可能是探讨如何将Quartz集成...

    spring整合quartz定时任务

    Quartz是一个功能强大的开源作业调度框架,而Spring则是一个广泛使用的Java企业级应用开发框架。两者的结合能够提供灵活且稳定的定时任务管理。 首先,要理解Spring整合Quartz的基本步骤: 1. **引入依赖**:在...

    Quartz动态修改时间,java实现修改CronExpression方法

    Quartz是一款广泛应用于Java环境中的开源任务调度框架,它允许开发者定义定时任务并灵活地进行调度。本项目主要探讨如何在运行时动态修改Quartz定时任务的CronExpression,即cron表达式,来改变任务的执行时间。 ...

    java定时器结合spring

    Spring Cloud Data Flow和Quartz等库提供了分布式定时任务的解决方案,能够协调多个节点上的任务执行。 通过这些知识点,我们可以创建一个健壮且灵活的定时任务系统,满足项目中的各种需求。结合Spring的其他特性,...

    java中 spring 定时任务 实现代码

    在Java开发中,Spring框架提供了一种方便的方式来创建和管理定时任务。本篇文章将详细介绍如何在Spring中实现定时任务,并给出具体的代码示例。 首先,我们需要一个执行定时任务的类,例如`TaskJob`。这个类通常...

    Spring Boot实战派(源码)

    《Spring Boot实战派》源码提供了丰富的学习材料,旨在帮助开发者深入理解并熟练掌握Spring Boot这一流行的Java后端开发框架。Spring Boot简化了Spring应用程序的初始设置和配置,使得开发人员能够快速构建可运行的...

    springboot-quartz-simple-master.zip

    Quartz是Java平台上的一个开源作业调度框架,它允许开发者安排任务执行,而Spring Boot则是一个简化Spring应用开发的框架。这个压缩包很可能是为了展示如何在Spring Boot应用中配置和使用Quartz来实现定时任务。 ...

    一个评测机基于linux C,web服务器基于java spring的在线程序评测系统.zip

    - **任务调度**:Spring Task或Quartz等工具可用于定时执行评测任务,如批量处理待评测的代码。 **系统架构** 在这个系统中,Web服务器接收用户的程序提交,将它们发送到评测机进行处理。评测机完成编译、运行和...

    模拟滴滴打车Java项目

    滴滴打车Java项目是一个基于Javaweb技术的模拟应用,旨在通过SSH(Spring、Struts2、Hibernate)三大框架的集成,实现类似滴滴出行的实际功能。SSH框架是Java领域中常用的MVC(模型-视图-控制器)架构模式的实现,...

    Spring 2.5 jar 所有开发包及完整文档及项目开发实例

     这个jar文件包含支持缓存Cache(ehcache)、JCA、JMX、邮件服务(Java Mail、COS Mail)、任务计划Scheduling(Timer、Quartz)方面的类。 (11) spring-web.jar  这个jar文件包含Web应用开发时,用到Spring框架时...

    spring boot 送水公司后台系统_Java

    此外,可以引入Quartz或Spring Task等定时任务框架,定期检查库存状态,自动触发订货或提醒补货。 在系统设计上,采用模块化架构,将业务逻辑分为不同的微服务,如员工管理服务、客户管理服务、库存管理服务等。每...

    最新最全的spring开发包

     这个jar文件包含支持缓存Cache(ehcache)、JCA、JMX、邮件服务(Java Mail、COS Mail)、任务计划Scheduling(Timer、Quartz)方面的类。 (11) spring-web.jar  这个jar文件包含Web应用开发时,用到Spring框架...

    spring-framework-3.1.4.RELEASE.zip

    Spring支持与许多其他流行框架的集成,如Hibernate、Struts、Quartz等,使得开发者可以利用这些框架的功能,同时享受Spring带来的便利。 总的来说,Spring Framework 3.1.4.RELEASE是一个强大且全面的Java开发工具...

    java scheduler 定时demo

    10. **测试与调试**: 对于定时任务的测试,通常需要模拟时间跳转,如使用`TestScheduler`(在Quartz中)或自定义`Clock`(在Spring中)。这可以帮助验证任务是否按预期的时间表运行。 以上就是关于“java scheduler...

    Spring Framework 2.5 开发参考手册(中文CHM版)

    8. **集成其他技术**:Spring支持与各种其他框架和技术的集成,如JSF、Struts、EJB、JMS、Quartz等,它提供了一种统一的方式来管理这些组件的依赖和生命周期。 9. **测试支持**:Spring提供了丰富的测试工具,包括...

    Spring4.3.17jar包压缩包

    10. **spring-context-support-4.3.17.RELEASE.jar**:上下文支持模块,提供了对各种第三方库如Quartz定时任务、邮件服务、缓存(如Ehcache)的支持,扩展了Spring上下文的功能。 通过这些jar文件,开发者可以轻松...

    spring定时器简单实例

    在单元测试中,可以使用`@TestPropertySource`注解和`spring.scheduledTasks`属性来模拟定时任务的执行,以便在测试环境中验证任务逻辑。 8. **日志与监控**: 为了跟踪任务的执行情况,可以在任务方法中添加日志...

    使用Spring Task开发定时任务的Demo

    这个功能强大的工具使得开发者无需依赖外部任务调度库(如Quartz或Cron),就能在Spring环境中轻松实现定时任务。 ### 1. Spring Task基础 Spring Task提供了两种主要的方式来创建定时任务:`@Scheduled`注解和`...

    spring5.0.4相关jar包,最全包含78个文件

    4. **spring-context-support**: 支持与第三方库如Quartz、JMS的集成。 5. **spring-expression**: 引入了强大的表达式语言(SpEL)用于运行时查询和操作对象属性。 6. **spring-aop**: 面向切面编程的支持。 7. **...

Global site tag (gtag.js) - Google Analytics