Java 定时启动服务

Java 定时执行任务!

1、DownLoadTaskListener.java 定时执行任务,实现Servlet的ServletContextListener接口,当服务开启时,开始运行TimerManager.java,通过方法 timer.schedule(task,timeConver.turnDate("2014-03-03 13:59:10"),PERIOD_DAY) 执行DownLoadTimerTask.java的run方法,从而代理服务!

/**
 * @包名 :com.minimax.listeren<br>
 * @文件名 :DownLoadTaskListener.java<br>
 * @类描述 :<br>
 * @作者 :Andy.wang<br>
 * @创建时间 :2014-3-2下午06:59:28<br>
 * @更改人 :<br>
 * @更改时间 :<br>
 */
package com.minimax.listeren;

import java.text.ParseException;
import java.util.Calendar;
import java.util.Timer;
import java.util.TimerTask;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

import com.minimax.util.TimeConver;

/**
 * @包名 :com.minimax.listeren<br>
 * @文件名 :DownLoadTaskListener.java<br>
 * @类描述 :下载图片监听器<br>
 * @作者 :Andy.wang<br>
 * @创建时间 :2014-3-2下午06:59:28<br>
 * @更改人 :<br>
 * @更改时间 :<br>
 */
public class DownLoadTaskListener implements ServletContextListener {
	private TimeConver timeConver = new TimeConver();
	private Timer timer = new Timer(); // 定时器实例化
	private int SCHEDULE_HOUR = 15; // 设置执行小时点
	private boolean isRunning = false;// 设置运行状态开关
	private String[] text = new String[] { "Andy", "Jimmy", "Rice", "Tim",
			"Harry", "Arvin" };// 测试用例
	private static int index = 0;// 测试用例数组索引

	/*
	 * (non-Javadoc)
	 * 
	 * @seejavax.servlet.ServletContextListener#contextDestroyed(javax.servlet.
	 * ServletContextEvent)
	 */
	public void contextDestroyed(ServletContextEvent arg0) {
		// TODO Auto-generated method stub
		timer.cancel();
		System.out.println("contextDestroyed....");
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * javax.servlet.ServletContextListener#contextInitialized(javax.servlet
	 * .ServletContextEvent)
	 */
	public void contextInitialized(ServletContextEvent arg0) {
		// TODO Auto-generated method stub
		System.out.println("contextInitialized....");
		new TimerManager();
	}

	class DownLoadTimerTask extends TimerTask {

		@Override
		public void run() {
			// TODO Auto-generated method stub
			Calendar c = Calendar.getInstance();
			if (!isRunning) {
				if (SCHEDULE_HOUR == c.get(Calendar.HOUR_OF_DAY)) {
					isRunning = true;
					System.out.println("CurrentTime = "
							+ timeConver.getCurrentTime());
					System.out.println("CurrentPatientId[" + index + "] = " + text[index]);
					index++;
					index = (index == text.length) ? 0 : index;
					System.out.println("...................");
					isRunning = false;
				}
			}
		}

	}

	class TimerManager {
		private static final long PERIOD_DAY = 1 * 60 * 1000; // 每隔1分执行一次

		public TimerManager() {
			DownLoadTimerTask task = new DownLoadTimerTask(); // 要执行的任务
			// 安排指定的任务在指定的时间开始进行重复的固定延迟执行。
			try {
				timer.schedule(task,
						timeConver.turnDate("2014-03-03 13:59:10"), PERIOD_DAY);
			} catch (ParseException e) {
				e.printStackTrace();
			}
		}
	}

}

2、TimeConver.java 时间类型的工具类

package com.minimax.util;

import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @文件名 :TimeConver.java <br>
 * @类描述 :该类为时间转化类,用于String与Date类型间的转化 <br>
 * @作者 : Andy.wang <br>
 * @创建时间 : 2012-4-27 下午05:59:39 <br>
 * @更改人 : <br>
 * @更改时间 : <br>
 */
public class TimeConver {
	// 默认类型(年月日时分秒)
	public static final String format_type = "yyyy-MM-dd HH:mm:ss";
	// 日期类型
	public static final String format_type_date = "yyyy-MM-dd";
	
	private static SimpleDateFormat format = null;

	public TimeConver() {
		// TODO Auto-generated constructor stub
		format = new SimpleDateFormat(format_type);
	}

	public TimeConver(String format_type) {
		format = new SimpleDateFormat(format_type);
	}

	/**
	 * 
	 * @方法描述 :将当前时间转化为String类型 <br>
	 * @创建者 :Andy.wang <br>
	 * @return
	 * @throws ParseException
	 * <br>
	 * @返回类型 :String <br>
	 */
	public String getCurrentTime() {
		return format.format(new Date());
	}

	/**
	 * 
	 * @方法名 :turnDate<br>
	 * @方法描述 :将字符串转化为时间类型<br>
	 * @创建者 :Andy.wang<br>
	 * @创建时间 :2014-3-2下午07:34:47 <br>
	 * @param source :时间字符串
	 * @return
	 * @throws ParseException
	 * 返回类型 :Date
	 */
	public Date turnDate(String source) throws ParseException {
		return format.parse(source);
	}

	/**
	 * 
	 * @方法名 :turnTimestamp<br>
	 * @方法描述 :将String类型转化为Timestamp类型<br>
	 * @创建者 :Andy.wang<br>
	 * @创建时间 :2014-3-2下午07:37:11 <br>
	 * @param source :时间字符串
	 * @return
	 * @throws ParseException
	 * 返回类型 :Timestamp
	 */
	public Timestamp turnTimestamp(String source)
			throws ParseException {
		return new Timestamp(turnDate(source).getTime());
	}

}


 

你可能感兴趣的:(Java 定时启动服务)