通过监听(ServletContextListener)可以在你启动项目的时候就进行监听。
我自己写了一个可以执行单个任务的程序package test.timer;import java.util.TimerTask;import javax.servlet.ServletContext;import test.TimeTest;public class HxjTimerTask extends TimerTask { private boolean isRunning = false; private boolean flag = true; private static int C_SCHEDULE_HOUR = 15; private ServletContext context = null; public HxjTimerTask(ServletContext context) {
super();
this.context = context;
} @Override
public void run() {
if (!isRunning) {
if (C_SCHEDULE_HOUR == TimeTest.getLocaleHour() && flag) {
isRunning = true;
context.log("开始执行任务");
int i = 0;
while (++i <= 10) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
context.log("已经执行完任务的:" + i + "/10");
}
flag = false;
isRunning = false;
context.log("任务执行完成");
}
} else {
context.log("上次任务还未执行完毕");
}
if (C_SCHEDULE_HOUR != TimeTest.getLocaleHour()) {
flag = true;
}
// System.out.println("flag:" + flag);
}}package test.timer;import java.util.Timer;import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;public class HxjListener implements ServletContextListener {

private Timer timer = null; public void contextInitialized(ServletContextEvent event) {
this.timer = new Timer(true);
event.getServletContext().log("启动hxj定时器");
timer.schedule(new HxjTimerTask(event.getServletContext()), 0,10000);
event.getServletContext().log("已经添加任务调度表");
} public void contextDestroyed(ServletContextEvent event) {
this.timer.cancel();
event.getServletContext().log("关闭hxj定时器");
}
}
1.我想如果在同一个时间触发多个任务,是否要开启多个线程。
2.如果同一个时间有多个任务触发,那么他们的执行顺序能同步执行吗?还是只能顺序执行?
3.如果不同的时间都有任务触发要怎么做(比如3点30分触发任务1;3点50分触发任务2;9点触发任务3等)。