timer.schedule的定时周期任务为什么只执行一次?而不是按时间周期执行?

时间:2021-12-01 02:42:46
timer.schedule(new TimerTask() {
     System.out.println("任务执行"); 
   }, 0, 10*1000);

需要做一个功能,每隔一段时间执行一下。查了一些资料,但很奇怪的为什么这个语句每隔10秒并不会自动执行?而是只会执行一次?
请教了,多谢!!

较全的源码:
public class test extends HttpServlet implements ServletContextListener{
  private java.util.Timer timer = null;

  public void contextInitialized(ServletContextEvent event) {
    timer = new java.util.Timer(true);
    System.out.println("定时器已启动");
    timer.schedule(new TimerTask() {
     System.out.println("任务执行"); 
   }, 0, 10*1000);
    System.out.println("已经添加任务调度表");
  }
  public void contextDestroyed(ServletContextEvent event) {
      timer.cancel();
      System.out.println("定时器销毁");
  }
}

web.xml中配置:
<web-app>
  <listener>
        <listener-class>com.tools.test</listener-class>
  </listener>
...

7 个解决方案

#1


up

#2



你没有实现run 方法也编译通过了?



我写的:

   timer = new Timer();
    timer.schedule(new TimerTask() {
      public void run() {
        System.out.println("测试一下");

      }
    }, 0, 10* 1000);

#3


run方法也编译通过了,但是也是只执行一次。

#4


up.

#5


up

#6


你检查一下是不是在执行定时任务的时候出错了或执行周期太短造成了错误。我用的方法与你这里提供的方法是一样的但我的执行周期是一小时一次己使用半年了都是正常的。

#7


谢谢两位的回复。结贴散分。

#1


up

#2



你没有实现run 方法也编译通过了?



我写的:

   timer = new Timer();
    timer.schedule(new TimerTask() {
      public void run() {
        System.out.println("测试一下");

      }
    }, 0, 10* 1000);

#3


run方法也编译通过了,但是也是只执行一次。

#4


up.

#5


up

#6


你检查一下是不是在执行定时任务的时候出错了或执行周期太短造成了错误。我用的方法与你这里提供的方法是一样的但我的执行周期是一小时一次己使用半年了都是正常的。

#7


谢谢两位的回复。结贴散分。