The content of this article is about the implementation code of java web scheduled tasks. It has certain reference value. Friends in need can refer to it. I hope it will be helpful to you.
Write in front:
In recent projects, it is necessary to query the database table regularly every day and complete the related data Update operation. The first thing that comes to my mind is the Timer class. I remember that when I first maintained the old system, I opened an interface, which also involved timing operations. The general usage is recorded below so that it can be easily found again when used in subsequent work.
Since it is used in the web, when the project is started, this scheduled task should be run. A listener is used here, and it will be run when it is initialized. This timer program, and then in the timer program, set the corresponding execution time and the task class that needs to be executed according to your own needs.
1. First write the task class we need to execute
public class DailyReportTimerTask extends TimerTask{ public static Logger logger=Logger.getLogger(DailyReportTimerTask.class); public void run() { System.out.println("----开始执行任务--------------"); } }
The task class needs to inherit TimerTask, this should be noted
2. Write a class to manage the task type, time and frequency of program start running
public class TimeManager { public static Logger logger=Logger.getLogger(TimeManager.class); //时间间隔 private static final long PERIOD_DAY = 24 * 60 * 60 * 1000; //24小时执行一次 public TimeManager() { Calendar calendar = Calendar.getInstance(); /*** 定制每日23:10执行方法 ***/ calendar.set(Calendar.HOUR_OF_DAY, 23); calendar.set(Calendar.MINUTE, 10); calendar.set(Calendar.SECOND, 0); Date date=calendar.getTime(); System.out.println(date); //如果第一次执行定时任务的时间 小于 当前的时间 //此时要在 第一次执行定时任务的时间 加一天,以便此任务在下个时间点执行。如果不加一天,任务会立即执行。循环执行的周期则以当前时间为准 if (date.before(new Date())) { date = this.addDay(date, 1); System.out.println(date); } Timer timer = new Timer(); DailyReportTimerTask task = new DailyReportTimerTask(); //安排指定的任务在指定的时间开始进行重复的固定延迟执行。 timer.schedule(task,date,PERIOD_DAY); } //增加几天 public Date addDay(Date date, int num) { Calendar startDT = Calendar.getInstance(); startDT.setTime(date); startDT.add(Calendar.DAY_OF_MONTH, num); return startDT.getTime(); } }
3. In order to allow the project to be initialized, just To run this scheduled program, you can use the listener
public class DailyReportListener implements ServletContextListener{ public void contextDestroyed(ServletContextEvent arg0) { } public void contextInitialized(ServletContextEvent arg0) { new TimeManager(); } }
4. The last step is to configure the corresponding listener
858da6a3d73ccf19b1e16adda72c27cf eae7f28921fa176b20e23abb843be090 5948543310f2c9ae6eabc90d07fdac18edu.hue.erp.util.timer.DailyReportListenera5cb73ed00d90e1dafbf6168c4a676c2 f26bc28f07f75d604e1d9c5e7de10123## in the web.xml file
# Developing a program to complete scheduled tasks in the web is roughly like this. For the specific execution of the business program, you need to complete it according to your own project.
The above is the detailed content of Java web scheduled task implementation code. For more information, please follow other related articles on the PHP Chinese website!