我如何用Java编写一个Web应用程序来启动一个小时的方法(没有客户请求)。
例如,它可能每小时自动读取一个网页。
答案 0 :(得分:1)
我实施ServletContextListener
并在contextInitialized
上使用ScheduledExecutorService
到scheduleWithFixedDelay
Runnable
来执行任务。在课程中添加@WebListener
注释,它们都会自动启动。
答案 1 :(得分:0)
您可以使用TimerTask来实现目标:
首先定义一个扩展TimerTask的类,并在run()方法中写下你想要做的事情。
import java.util.Date;
import java.util.TimerTask;
public class DateTask extends TimerTask {
@ Override
public void run() {
System.out.println("Current Time :" + new Date());
}
}
然后在另一个类中,使用schedule(TimerTask任务,长延迟,长周期)来设置方法的周期。
import java.util.Date;
import java.util.Timer;
public class TimerDemo {
public static void main(String[] args) {
TimerDemo timerDemo = new TimerDemo();
timerDemo.testScheduleDelayAndPeriod();
}
void testScheduleDelayAndPeriod() {
Timer timer = new Timer();
System.out.println("Period: 2 seconds");
System.out.println("In testScheduleDelayAndPeriod:" + new Date());
timer.schedule(new DateTask(), 0, 2000);
}
}
以下是我写的代码的结果:
Period: 2 seconds
In testScheduleDelayAndPeriod:Mon Mar 23 11:42:52 CST 2015
Current Time :Mon Mar 23 11:42:52 CST 2015
Current Time :Mon Mar 23 11:42:54 CST 2015
Current Time :Mon Mar 23 11:42:56 CST 2015
Current Time :Mon Mar 23 11:42:58 CST 2015
Current Time :Mon Mar 23 11:43:00 CST 2015
Current Time :Mon Mar 23 11:43:02 CST 2015
Current Time :Mon Mar 23 11:43:04 CST 2015
Current Time :Mon Mar 23 11:43:06 CST 2015
每2秒打印一次当前时间。