java 定时器的使用

在北京这边实习也一个多月了,也接触了不少东西,今天领导开会,说服务器压力太大,客户很不满意,访问速度上要求很苛刻,我们项目里的一些操作,没有必要写成动态的都改写成静态的,每天定时更新一下静态html页面里面的内容(因为客户每天会定时更新一些内容,而且只更新一次)。

听得我好蒙啊,我头一次听说java 的定时操作呢!要命的东西,好坑的啊,晚上抽出了时间,学习了一下java的定时器,也就是一些基本的操作。

java定时器主要用到两个类:Timer(计划任务调度类)和TimerTask(具体任务类)

先介绍TimerTask类吧,这里我们并不是直接去用这个类,这个类是一个抽象类,我们要设置我们自己的计划任务的具体内容,我们可以自定义一个MyTimerTask(名字可以自定义的哈)类,但是必须要继承TimerTask类,这样继承过来之后,就会默认重载一个run方法,而这个方法的正是我们详细的计划任务方法,我们可以直接把我们想要做的操作,写在这个方法里面,这是在最直接的方式了,要是要做的任务很多很多,也可以在写别的方法或者类,我们在这个run方法里面去调用就行。

然后就是Timer类的,呵呵,直接用呗,对于这个类的使用还是参照着下面我给的代码吧!这里我介绍一些这个类的基本信息:

Timer类的构造方法:

好像只有一个,Timer()
//构造方法不必多解释,实例化用途的

常用的方法:

方法摘要
  cancel()

终止此计时器,丢弃所有当前已安排的任务。

purge()

从此计时器的任务队列中移除所有已取消的任务。

schedule(TimerTask task,
Date time)

安排在指定的时间执行指定的任务。

schedule(TimerTask task,
Date firstTime, long period)

安排指定的任务在指定的时间开始进行重复的固定延迟执行

schedule(TimerTask task, long delay)

安排在指定延迟后执行指定的任务。

schedule(TimerTask task, long delay, long period)

安排指定的任务从指定的延迟后开始进行重复的固定延迟执行

scheduleAtFixedRate(TimerTask task,
Date firstTime, long period)

安排指定的任务在指定的时间开始进行重复的固定速率执行

scheduleAtFixedRate(TimerTask task, long delay, long period)

安排指定的任务在指定的延迟后开始进行重复的固定速率执行

这里的话,我简单介绍定时器的触发以及使用:

使用,看看下面的代码,结合上述所属,应该很明确了!小弟不才,如发现错误希望纠正哈!

public class MyTimerTask extends TimerTask {
	private static int i = 0;

	@Override
	public void run() {
		// TODO Auto-generated method stub
		System.out.println("--------------" + (i++) + "---------------");
	}
}
public class Mytimer {
	public static void main(String args[]) throws ParseException {
		Timer time = new Timer();
		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		Date date = format.parse("2014-08-19 21:56:03");
		time.scheduleAtFixedRate(new MyTimerTask(), date, 1000);
	}
}

有一定java基础的肯定能看出来,我就是在一个简单的java类里面就触发了这个计划任务!

那么我们怎么让我们的java web项目已启动的时候就去触发这个机会任务,服务器只要开启了,计划任务就存在,怎么去做呢,这里我介绍使用servlet来触发:

首先我们要做的就是把上面的Mytimer类改写成一个正规的servlet类,如下:

public class Mytimer extends HttpServlet {
	public void init() {
		Timer time = new Timer();
		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		Date date;
		try {
			date = format.parse("2014-08-19 23:00:03");
			time.scheduleAtFixedRate(new MyTimerTask(), 0, 1000);
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

然后就需要配置我们项目的配置文件WEB.XML文件了,我们在这里面,让定时器在服务器开启了的时候就加载进来,详细的配置如下:

<servlet>
     	<servlet-name>Timer</servlet-name>
     	<servlet-class>action.TimerUtils.Mytimer</servlet-class>
     	<load-on-startup>0</load-on-startup>
     </servlet>

简单介绍一下这里面的load-on-startup的作用吧!也是我看到的网友总结的这个,我之前也不知道呢!

load-on-startup的取值一般都是正数或者0,我们通常取0,1,2,3,4,5,值越小越优先加载

好了,等这几天在项目里面具体实现定时更新静态html内容了,在看看还有什么需要补充的东西,在补充吧,很晚了!和自己说一声晚安,加油!

java 定时器的使用,布布扣,bubuko.com

时间: 2024-10-23 03:47:06

java 定时器的使用的相关文章

Java 定时器使用

// 定时器 privateTimer timer; timer = new Timer(); timer.schedule(new TimerTask() { public void run() { task(); } }, new Date(), 60*1000); public void task() { } Java 定时器使用,布布扣,bubuko.com

整理:java定时器。

本文纯属个人思路,如有错误,请指正. java的Timer依赖Thread,每一个Timer实际上都是一个Thread. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 import java.util.TimerTask; /**  * 本类仅为实现TimerTask,意义不大.  * @author 9082046**@qq.com  *  */ public class Task  extends TimerTask {       public void run()

java定时器实现总结

前言:Java定时器目前主要有3种实现方式:JDK组件,Spring Task,Quartz框架. 1. JDK组件(1) java.util.TimerTask MyTimerTask.java: public class MyTimerTask extends TimerTask { @Override public void run() { System.out.println("MyTimerTask, now: " + new SimpleDateFormat("y

Java定时器:Timer

项目中往往会遇到需要定时的任务,例如订单,当用户在某个规定时间内没有操作订单时,订单状态将会发生改变. 那么在这种情况下,我们会用到定时器. 举例: 1 import java.util.Timer; 2 3 4 /** 5 * java定时器 6 * @author Administrator 7 * 8 */ 9 public class TimeTaskTest { 10 public static void main(String[] args) { 11 Timer timer = n

java定时器

以下内容根据 JavaTM Tutorial 和相关API doc和网上的资料翻译整理,以供日后查看和参考: 1.描述 Timer是一种定时器工具,用来在一个后台线程计划执行指定任务.它可以计划执行一个任务一次或反复多次. TimerTask一个抽象类,它的子类代表一个可以被Timer计划的任务. 简单的一个例程: import java.util.Timer; import java.util.TimerTask; /** * Simple demo that uses java.util.T

Java定时器TimeTask

package com.alan.timer; import java.util.Calendar;import java.util.Date;import java.util.Timer;import java.util.TimerTask;/** * Java定时器 * @author 邵海雄 * @date 2016年9月27日 下午5:38:19 * @version v1.0 */public class TimerTest { // 第一种方法:设定指定任务task在指定时间time

Java定时器的使用(Timer简介)

在开发中,我们经常需要一些周期性的操作,例如每隔几分钟就进行某一项操作.这时候我们就要去设置个定时器,Java中最方便.最高效的实现方式是用java.util.Timer工具类,再通过调度java.util.TimerTask任务. 1.简介 Timer是一种工具,线程用其安排以后在后台线程中执行的任务.可安排任务执行一次,或者定期重复执行.实际上是个线程,定时调度所拥有的TimerTasks. TimerTask是一个抽象类,它的子类由 Timer 安排为一次执行或重复执行的任务.实际上就是一

我的第一个java定时器

在开发中,我们经常需要一些周期性的操作,例如每隔几分钟就进行某一项操作.这时候我们就要去设置个定时, 接下来就去开发我的第一个java定时器吧,Java计时器实用程序允许您执行线程或任务在一个预先确定的将来的时间,并根据一组这些任务可以重复频率. 设计和实现一个计时器,会用到model-control-view(MVC)设计模式. 开始: 首先来构w建一个最简单的java web 项目吧.这里我用的是最myeclipse,好处自然不必多说,谁用谁知道,当然如果 你要用其他IDE也可以. 在mye

java定时器的使用

java定时器的使用(Timer) 1.在应用开发中,经常需要一些周期性的操作,比如每5分钟执行某一操作等. 对于这样的操作最方便.高效的实现方式就是使用java.util.Timer工具类. privatejava.util.Timer timer; timer = newTimer(true); timer.schedule( newjava.util.TimerTask() { public void run() {//server.checkNewMail(); 要操作的方法} }, 0