java定时执行任务的方法:

定时执行任务的三种方法:1)java.util.Timer.2)ServletContextListener.3)org.springframework.scheduling.timer.ScheduledTimerTask

1)java.util.Timer
这个方法应该是最常用的,不过这个方法需要手工启动你的任务:
Timer timer=new Timer();
timer.schedule(new ListByDayTimerTask(),10000,86400000);
这里的ListByDayTimerTask类必须extends TimerTask里面的run()方法。

2)ServletContextListener
这个方法在web容器环境比较方便,这样,在web server启动后就可以
自动运行该任务,不需要手工操作。
将ListByDayListener implements ServletContextListener接口,在
contextInitialized方法中加入启动Timer的代码,在contextDestroyed
方法中加入cancel该Timer的代码;然后在web.xml中,加入listener:
<listener>
<listener-class>com.qq.customer.ListByDayListener</listener-class>
</listener>

3)org.springframework.scheduling.timer.ScheduledTimerTask
如果你用spring,那么你不需要写Timer类了,在schedulingContext-timer
.xml中加入下面的内容就可以了:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>
<bean id="timer" class="org.springframework.scheduling.timer.TimerFactoryBean">
<property name="scheduledTimerTasks">
<list>
<ref local="MyTimeTask1"/>
</list>
</property>
</bean>

<bean id="MyTimeTask" class="com.qq.timer.ListByDayTimerTask"/>

<bean id="MyTimeTask1" class="org.springframework.scheduling.timer.ScheduledTimerTask">
<property name="timerTask">
<ref bean="MyTimeTask"/>
</property>
<property name="delay">
<value>10000</value>
</property>
<property name="period">
<value>86400000</value>
</property>
</bean>
</beans>

 

 

JAVA 定时运行程序
2007-09-05 16:47

import java.util.Timer;
import java.util.TimerTask;

public class Auto
{
public static void main(String[] args)
{
      Timer timer=new Timer();
      timer.schedule(new Auto.myrun(), 0, 500);
}

static class    myrun extends TimerTask
{
      public void run()
      {
       System.out.println("Hello World!");
      }
}
}

 

 

另一种

public   class   myTask  
          extends   java.util.TimerTask   {  
      String   jobName;  
      private   int   i;  
      public   void   run()   {   //run   in   interface   Runnable  
          System.out.println(jobName);  
      }  
   
      public   myTask(String   jobName)   {  
          this.jobName   =   jobName;  
      }  
  }  
   
  //doTask.java    
   
  import   java.util.*;  
  import   java.io.*;  
   
  public   class   doTask   {  
      private   java.util.Timer   timer;  
      private   java.util.TimerTask   task;  
      public   doTask(java.util.TimerTask   task)   {  
          this.timer   =   new   Timer();  
          this.task   =   task;  
      }  
      public   void   start(int   delay,   int   internal)   {  
          timer.schedule(task,   delay   *   1000,   internal   *   1000);//利用timer.schedule方法  
      }  
   
      public   static   void   main(String[]   args)   {  
          java.util.TimerTask   task1   =   new   myTask("           Job   1");  
          java.util.TimerTask   task2=   new   myTask("Job   2");  
          doTask   pt   =   new   doTask(task1);  
          pt.start(1,3);  
          doTask   pt2   =   new   doTask(task2);  
          pt2.start(1,1);  
      }  
   
  }   
   

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值