

Java技术
2005: 03 04 05 06 07 08
09 10 11 12
2006: 01 02
Asp.net
2005: 07 08 09 10 11 12
2006: 01 02

| JAVA-如何实现TIMER功能 |
| JAVA-如何实现TIMER功能 1.listener class package timer; import java.util.TimerTask; import java.util.Timer; import javax.servlet.*; public class RemindListener implements ServletContextListener { private java.util.Timer timer = null; public void contextInitialized(ServletContextEvent sce) { timer = new java.util.Timer(true); sce.getServletContext().log(new java.util.Date()+"Timer start up!"); timer.schedule(new RemindTask(),0,1*60*1000);//1 minute roll sce.getServletContext().log(new java.util.Date()+"Schedule loaded!"); } public void contextDestroyed(ServletContextEvent sce) { timer.cancel(); sce.getServletContext().log(new java.util.Date()+"Timer destroyed!"); } } 2.Task class package timer; import java.util.TimerTask; import java.util.Calendar; public class RemindTask extends TimerTask{ private static final int C_SCHEDULE_HOUR = 15; private static boolean isRunning = false; public RemindTask() { } public void run() { Calendar cal = Calendar.getInstance(); if (!isRunning) { if (C_SCHEDULE_HOUR == cal.get(Calendar.HOUR_OF_DAY)) { isRunning = true; System.out.println(new java.util.Date()+"task start"); //TODO for example int i = 0; while (i++ < 10) { System.out.println(new java.util.Date()+"Done!task" + i + "/" + 10); } isRunning = false; System.out.println(new java.util.Date()+"All task Done!"); } } else { System.out.println(new java.util.Date()+"Task existed!"); } } } 3.loadonstart in web.xml <listener> <listener-class>timer.RemindListener</listener-class> </listener> 4.restart server |