在java Web应用程序中自动运行方法

时间:2015-03-23 03:35:27

标签: java web

我如何用Java编写一个Web应用程序来启动一个小时的方法(没有客户请求)。

例如,它可能每小时自动读取一个网页。

2 个答案:

答案 0 :(得分:1)

我实施ServletContextListener并在contextInitialized上使用ScheduledExecutorServicescheduleWithFixedDelay 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秒打印一次当前时间。