`

java定时器的具体使用和web使用

    博客分类:
  • jsp
阅读更多
    公司部分项目提出将某些项目进行静态化...所以在测试页面命中率和数据库访问量之后针对某些写的频率比较低和访问比较大页面进行静态化。当然也不是进行实时的静态化.这里需要使用定时器来进行静态化的控制.下面了解一下定时器的应用!
1.具体方法的了解
(1)Timer.schedule(TimerTask task,Date time)//安排在制定的时间执行指定的任务。
(2)Timer.schedule(TimerTask task,Date firstTime ,long period)//安排指定的任务在指定的时间开始进行重复的固定延迟执行.
(3)Timer.schedule(TimerTask task,long delay)//安排在指定延迟后执行指定的任务.
(4)Timer.schedule(TimerTask task,long delay,long period)//安排指定的任务从指定的延迟后开始进行重复的固定延迟执行.
(5)Timer.scheduleAtFixedRate(TimerTask task,Date firstTime,long period)//安排指定的任务在指定的时间开始进行重复的固定速率执行.
(6)Timer.scheduleAtFixedRate(TimerTask task,long delay,long period)//安排指定的任务在指定的延迟后开始进行重复的固定速率执行.


2.简单的测试方法
import java.io.IOException;
import java.util.Timer;

public class TimerTest {

public static void main(String[] args){
Timer timer = new Timer();
timer.schedule(new MyTask(), 1000, 2000);//在1秒后执行此任务,每次间隔2秒

   while(true){//这个是用来停止此任务的,否则就一直循环执行此任务了
   try {
    int ch = System.in.read();
    if(ch-'c'==0){
     timer.cancel();//使用这个方法退出任务
    }
   } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
}
}

static class MyTask extends java.util.TimerTask{
   @Override
   public void run() {
    // TODO Auto-generated method stub
    System.out.println("我是来测试的。。我两秒出来一次");
   }
}
}

这样,每隔两秒钟就会在控制台输出语句。


3.根据实际需要进行例子测试
由于我们刷新一些页面或者数据的时候.都会选择在一天的某个时候或者几天!这里就需要针对某个固定时间来制作这个定时器
public class TimerTest {
	/**
	 * 每天固定时间更新
	 * 每天9点14分
	 */
	@Test
	public void testRegular() {
		new Date();
		Timer timer = new Timer();
		timer.schedule(new MyTask(getRegularDate("HH:mm", "11:21")),getRegularDate("HH:mm", "11:21"));//每天固定时间更新,每天11点21分
	}
	/**
	 * 
	 * @author chenjinjie
	 *
	 */
	static class MyTask extends java.util.TimerTask{
		private Date time;
		public MyTask() {
		}
		public MyTask(Date time) {
			this.time = time;
		}
	   @Override
	   public void run() {
		if(new Date().after(time))//这里主要是防止服务器重启之后发觉时间旧了会自动刷新一次
	    System.out.println("我是来测试的。。固定时间"+time);
	   }
	}
	 /**
     * 根据日期字符串获取日期对象,精确到当天凌晨零点零分,字符串格式:"YYYY-MM-DD"
     * @param fomatStr 如(yyyy年MM月dd日 HH:mm)
	 * @param dateSource 源日期(String)
     * @return
     */
    public static Date getRegularDate(String formatData,String dateString){
    	SimpleDateFormat   formatter   =   new   SimpleDateFormat   (formatData);   
    	Date d = null;
		try {
			d = formatter.parse(dateString);
		} catch (ParseException e) {
			e.printStackTrace();
		}
		Calendar calendar = Calendar.getInstance();
		calendar.set(Calendar.HOUR_OF_DAY, d.getHours());
		calendar.set(Calendar.MINUTE, d.getMinutes());
		calendar.set(Calendar.SECOND, d.getSeconds());
		Date time = calendar.getTime();
    	return time;
    }
}

以上只是初步简单的使用..

4.定时器在JSP中的应用。在JSP中可以靠监听器和定时器的结合来解决某些问题

4.1 先来一个定时器的任务:
public class Task extends TimerTask { 
	  private static final int C_SCHEDULE_HOUR = 0; 
	  private static boolean isRunning = false; 
	  private ServletContext context = null; 

	  public Task() { 
	  } 
	  public Task(ServletContext context) { 
	    this.context = context; 
	  } 

	  public void run() { 
	    Calendar cal = Calendar.getInstance(); 
	    if (!isRunning) { 
	    	context.log("开始执行指定任务"); 
	    	System.out.println("执行定时任务");
	    	context.log("指定任务执行结束"); 
	    } 
	    else { 
	      context.log("上一次任务执行还未结束"); 
	    } 
	  }


4.2然后监听器(注意实现的接口):
public class ContextListener 
extends HttpServlet 
implements ServletContextListener { 
public ContextListener() { 
} 

private java.util.Timer timer = null; 
public void contextInitialized(ServletContextEvent event) { 
timer = new java.util.Timer(true); 
event.getServletContext().log("定时器已启动"); 
timer.schedule(new Task(event.getServletContext()), 0, 10*60*1000); //开启后.每10分钟刷新一次
event.getServletContext().log("已经添加任务调度表"); 
} 

public void contextDestroyed(ServletContextEvent event) { 
timer.cancel(); 
event.getServletContext().log("定时器销毁"); 
} 
} 



4.3最后配置XML文件。

web-app 标签内添加

<listener>
    <listener-class>cn.read.web.listener.ContextListener </listener-class>
</listener>

这样启动Tomcat后就会在控制台输出当前日期。。

5.项目的具体使用和感想
这只是在项目的初步规划.可能实行过程中还会出现很多问题.比如网络和服务器重启等...不过会在后面开发中继续努力改进.使其功能更加完善.
分享到:
评论

相关推荐

    JAVA中定时器的使用

    JAVA 中提供了多种方式来实现定时器,包括使用 Timer 和 TimerTask 类,使用 ScheduledExecutorService 等。 在 JAVA 中,Timer 和 TimerTask 是两个基本的类,用于实现定时器。Timer 类用于创建一个新的定时器,而...

    java web定时器例子

    Java Web定时器主要指的是在Java Web应用程序中实现定时任务的功能,这在许多业务场景中都是必要的,例如数据备份、报表生成、邮件发送等。在Java中,我们可以利用内置的`java.util.Timer`类或者Spring框架的`@...

    Java定时器

    本文将深入探讨Java定时器的原理与应用,通过实例演示如何使用`java.util.Timer`和`java.util.TimerTask`类来创建和管理定时任务。 #### 二、Java定时器基础 ##### 1. `java.util.Timer`类 `Timer`类位于`java....

    java 定时器 spring 定时器

    Java定时器和Spring定时器是Java开发中用于执行周期性任务的重要工具,它们在系统维护、数据同步、报告生成等场景中发挥着关键作用。本文将深入探讨这两个概念,以及如何在Spring框架中配置和使用定时器。 首先,...

    spring和java定时器

    Spring框架和Java内置的定时器提供了两种不同的方式来实现这样的功能。 首先,我们来看Spring定时器。Spring使用的是Quartz库来实现定时任务管理。在给出的例子中,可以看到配置文件中定义了几个关键的bean: 1. `...

    java定时器.pdf

    《Java定时器的使用与Web应用详解》 Java定时器是Java语言中用于实现定时任务的重要工具,它位于`java.util`包下,通过`Timer`和`TimerTask`两个核心类,我们可以轻松创建和管理定时任务。本文将详细介绍Java定时器...

    java定时器结合spring

    首先,Java定时器主要由`java.util.Timer`类和`java.util.TimerTask`类组成。`Timer`类是定时器,用于调度任务的执行,而`TimerTask`是可被调度的任务,继承自`Runnable`接口。然而,这种方式并不适合复杂的多线程...

    java定时器使用汇总.pdf

    总的来说,Java定时器是通过`Timer`和`TimerTask`类实现的,可以方便地在Web环境中进行配置,以实现定时任务的自动化执行。在设计定时任务时,需要考虑到任务的执行频率、任务间的依赖关系以及异常处理,以确保系统...

    Java定时器在Web中的应用.doc

    Java定时器在Web应用中的实现主要涉及到`java.util.Timer`类和`ServletContextListener`接口,它们在Spring、Struts、Hibernate等框架环境下同样适用。本文将详细解释如何使用这两个核心组件来实现在Web环境中定时...

    Java_Web定时器使用

    下面通过具体示例代码进一步理解如何在Java Web环境中使用定时器。 ##### 4.1 定义监听器类 ```java public class TimerListener implements ServletContextListener { private Timer timer = null; private ...

    Java-Web定时器使用.doc

    下面我们将详细探讨如何在Java Web环境中设置和使用定时器。 首先,`java.util.Timer`类是Java中的一个调度工具,它允许开发者创建定时任务并安排它们在未来某个时间点或按照特定间隔重复执行。`TimerTask`是一个...

    JAVA定时器word文档

    总结一下,Java定时器(java.util.Timer)和TimerTask配合使用,可以方便地实现定时执行任务的需求。通过结合Servlet监听器,我们可以确保定时器在Web应用启动时启动,并在应用关闭时停止,确保任务的生命周期与Web...

    java定时器的实现

    ### Java定时器的实现 #### 一、概述 在Java编程中,定时执行特定任务是一种常见的需求。...通过以上分析可以看出,Java定时器的实现相对简单且易于理解,但在实际项目中还需要根据具体情况灵活选择合适的技术方案。

    java定时器定时调用任务

    总结来说,Java定时器是通过`Timer`和`TimerTask`类实现的,它们提供了基础的定时任务调度功能。在Servlet环境中,我们可以利用监听器或Servlet的初始化方法来整合定时器。然而,对于更复杂的定时需求,建议使用`...

    spring和java的定时器

    spring和java的定时器 BeanFactory beans=new FileSystemXmlApplicationContext("WebRoot/WEB-INF/applicationContext1.xml");

    java Timer定时器实例 Spring实例.doc

    通过使用Spring的定时器,我们可以将定时任务集成到Spring应用中,实现更加灵活和强大的任务调度。例如,我们可以利用 `@Scheduled` 注解来定义一个定时任务: ```java import org.springframework.scheduling....

    web定时器组件

    Web定时器组件是Java Web应用中用于执行周期...综上所述,Web定时器组件是Java Web应用不可或缺的一部分,它能有效地提升应用的自动化水平和效率。选择合适的定时器组件并合理实现,将有助于构建稳定、高效的Web系统。

    java定时器

    Java定时器是Java编程语言中用于执行预定任务的工具,主要通过`java.util....总之,Java定时器提供了一种方便的方式来执行计划任务,而将其集成到Java Web应用中,可以根据实际需求选择合适的方式启动和管理定时器。

    java_Timer定时器实例_Spring实例

    标题与描述均提到了“Java_Timer定时器实例_Spring实例”,这表明文章主要讨论的是如何在Java中使用Timer类创建定时任务,并将其整合到Spring框架中。以下是对该主题的详细解析: ### Java中的Timer定时器 #### ...

Global site tag (gtag.js) - Google Analytics