`
jeasonjack
  • 浏览: 49594 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java 定时器

阅读更多
size=small]这是我写的一个java定时器,大家做个参考[/size]
package com.xuanzhi.userstat.spweekly;

import java.util.Timer;

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

public class TimerListener implements ServletContextListener {

	private Timer timer = null;
	private SampleTask sampletask;
	public static String configPath = "";
	@Override
	public void contextDestroyed(ServletContextEvent event) {
		// TODO Auto-generated method stub
		timer.cancel();
		event.getServletContext().log("定时器销毁");
	}

	@Override
	public void contextInitialized(ServletContextEvent event) {
		// TODO Auto-generated method stub
		
		configPath = event.getServletContext().getRealPath("/")+"upload/splist.xls";
		System.out.println(configPath);
		
		timer = new Timer(true);
		
		sampletask = new SampleTask(event.getServletContext());
		event.getServletContext().log("定时器已启动");
		
		timer.schedule(sampletask, 0,60*60);
		
		event.getServletContext().log("已添加任务调度表");
		
	}

}


package com.xuanzhi.userstat.spweekly;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.TimerTask;

import javax.servlet.ServletContext;

import com.xuanzhi.userstat.dailydata.MailUtil;

public class SampleTask extends TimerTask {

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

	private ServletContext context;
	private static boolean isRunning = false;
	private static boolean flag = true;
	private static final int WEEK_DAY = 2;
	
	@Override
	public void run() {
		// TODO Auto-generated method stub
		SimpleDateFormat fm = new SimpleDateFormat("yyyy-MM-dd");
		Calendar cal = Calendar.getInstance();
		cal.setTime(new Date());

		
		if(!isRunning)
		{
			if(WEEK_DAY == cal.get(Calendar.DAY_OF_WEEK) && flag)
			{
				isRunning = true;
				context.log("开始执行指定任务");
				
				//需要执行的代码
				getSpContent gs = new getSpContent();
				String mailCountent = gs.sendMail(TimerListener.configPath);
				
				MailUtil.sendMail("mengfanzhi@yolotone.com","","", "通道收入周报  "+fm.format(new Date()),mailCountent , null);
				
				isRunning = false;
				flag = false;
				context.log("指定任务执行结束");
			}
		}
		else
		{
			context.log("上一次任务执行还未结束");			
		}
		
		if(WEEK_DAY != cal.get(Calendar.DAY_OF_WEEK))
		{
			flag = true;
		}
	}

}


最后在web.xml中配置监听器

<listener>
<listener-class>com.xuanzhi.userstat.spweekly.TimerListener</listener-class>
</listener>
1
1
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics