web项目中添加定时任务

时间:2022-03-20 05:30:04

1.在web.xml中添加servlet

<servlet>
<servlet-name>StatisticInitServlet</servlet-name>
<servlet-class>com.jovision.servlet.StatisticInitServlet</servlet- class>
<load-on-startup>1</load-on-startup> 该servlet加载顺序,设为1,数字越小,代表加载时间越早
</servlet>

2.在servlet的init()方法中添加定时任务

public class StatisticInitServlet extends HttpServlet {
private static Logger logger = Logger.getLogger(StatisticInitServlet.class);
/*每日23点40分执行定时任务*/
public void init() throws ServletException {
final Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 23);
calendar.set(Calendar.MINUTE, 40);
calendar.set(Calendar.SECOND, 00);
Date time = calendar.getTime(); Timer timer = new Timer();
timer.schedule(new TimerTask() {
public void run() {
//统计当天新增设备数和新增用户数
daydeviceNum();
dayuserNum();
deleteRedisStatistic();
}
//1000 * 60 * 60 * 24
}, time, 1000 * 60 * 60 * 24);// 这里设定将延时每天固定执行 } }
java.util.Timer.schedule(TimerTask task, Date firstTime, long period) 这个方法就是每隔指定的时间执行指定的任务,但需要注意的是,如果你“当前的时间”>“firstTime”,定时任务也会执行一次,
如果是统计每一天的数据,建议将这个firstTime设成23:50:00,千万不要设成00:00:00,因为00:00:00是一天中最小的时间。