关于定时器的使用疑问?在线等
我定义了一个定时器,每隔一分钟处理数据600条(发送短信,并修改短信状态),正常情况下只需30秒就可以了。但由于异常情况下,处理不完那么多数据,下次循环又处理此纪录,应该怎么办呢?
我的想法是1分钟还是去扫描600条,如果没有处理完,下次扫描则顺延,上次数据没处理完,定时器不能执行。请问能实现吗?多谢啦!!!
web.xml
<listener>
<listener-class>SMSListener</listener-class>
</listener>
SMSListener.java
public class SMSListener extends HttpServlet implements ServletContextListener {
private static Timer timer;
public SMSListener() {
}
public void contextInitialized(ServletContextEvent event) {
timer = new Timer(true);
//1分钟执行600条新短信插入
timer.schedule(new SMSTask(event.getServletContext()), 0, 60*1000);
}
public void contextDestroyed(ServletContextEvent event) {
timer.cancel();
}
}
SMSTask.java
public class SMSTask extends TimerTask {
private ServletContext context = null;
public SMSTask() {
}
public SMSTask(ServletContext context) {
this.context = context;
}
public void run(){
try {
//业务逻辑
}
catch (Exception e) {
e.printStackTrace();
}
}
}