web项目定时执行任务

首先写了个servlet

例如


package com.uap.weixin.service;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import com.uap.customer.dao.CustomerDao;
import com.uap.weixin.utils.ToolConfig;

public class TimerServlet implements ServletContextListener{

	
	public TimerServlet() {
		super();
	}

	/** 
	 * 当天
	 * 获取指定时间对应的毫秒数 
	 * @param time "HH:mm:ss" 
	 * @return 
	 */  
	private  long getTimeMillis(String time) {  
	    try {  
	        DateFormat dateFormat = new SimpleDateFormat("yy-MM-dd HH:mm:ss");  
	        DateFormat dayFormat = new SimpleDateFormat("yy-MM-dd");  
	        //String str=dayFormat.format(new Date()) + " " + time;
	        Date curDate = dateFormat.parse(dayFormat.format(new Date()) + " " + time);  
	        return curDate.getTime();  
	    } catch (Exception e) {  
	        e.printStackTrace();  
	    }  
	    return 0;  
	}


	public void contextDestroyed(ServletContextEvent arg0) {
		
	}

	public void contextInitialized(ServletContextEvent arg0) {
		ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);  
	    
		  //这里是每隔24小时执行一次;//前一次执行结束到下一次执行开始的间隔时间(间隔执行延迟时间)
		    long oneDay = 24 * 60 * 60 * 1000;
		    
		    //初始化延时 ,这里的timer是具体的时间,我把时间写在了配置文件中,ToolConfig.getString("timer")--->改成具体的时间
		    long initDelay  = getTimeMillis(ToolConfig.getString("timer")) - System.currentTimeMillis();
		    initDelay = initDelay > 0 ? initDelay : oneDay + initDelay; 
		    //定时器执行开始
		    executor.scheduleAtFixedRate(new Runnable() {
				
				public void run() {
					//调用此方法,定时获取关注用户
					//这里是定时任务
					CustomerDao.getCustomer();
					System.out.println("正在执行。。。");
				}
			}, initDelay,  
	        oneDay,  
	        TimeUnit.MILLISECONDS);		
	}

}
 <!--这里是web.xml文件中的代码-->
 <listener>
 	<listener-class>com.uap.weixin.service.TimerServlet</listener-class>
 </listener>


你可能感兴趣的:(web项目定时执行任务)