什么情况下我们会使用定时器的功能呢:就是我们需要程序在某一个时间或者每隔一段时间运行一个固定的程序时.
首先: 1.在web.xml中配置监听器:
<listener>
<listener-class>com.founder.cetv.servlet.ContextListener</listener-class>
</listener>
2.添加两个类:
MessageTask.java
package com.founder.cetv.servlet;
import java.util.Date;
import java.util.List;
import java.util.TimerTask;
import com.founder.cetv.bo.OssMgr;
import com.founder.cetv.dbManager.ShopManager;
import com.founder.cetv.pojo.Shop;
public class MessageTask extends TimerTask {
public MessageTask() {
// 默认构造函数
}
/**
* 完成调用webservice接口更新所有的店铺的商品数量信息
*/
public void run() {
//在这里写上你要定时执行的代码
List list=ShopManager.getLoginNameList();
OssMgr ossMgr = new OssMgr();
for(int i=0;i<list.size();i++){
Shop shop = new Shop();
shop=(Shop)list.get(i);
ossMgr.updateUserGoodsNum(shop.getLoginName());
}
}
}
ContextListener.java
package com.founder.cetv.servlet;
import java.util.Date;
import java.util.Timer;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import com.founder.cetv.util.DateTimeUtils;
public class ContextListener implements ServletContextListener {
private Timer timer = null;
private MessageTask messageTask;
public void contextInitialized(ServletContextEvent event) {
timer = new Timer(true);
messageTask = new MessageTask();
timer.schedule(messageTask, 0,24*60*60*1000);
}
public void contextDestroyed(ServletContextEvent event) {
// 销毁定时器
timer.cancel();
}
}