我想做一个在后台自动执行程序,每个一小时执行一次,代码如下:
import java.util.Timer;
import java.util.TimerTask;
import java.util.Date;public class ImportData{
Timer timer;
public ImportData(){
  timer = new Timer("ImportData",true);
  timer.schedule(new TestTimer(),0,60*60*1000);
}
public static void main(String s[]) {
new ImportData();
}
       }
   
   
class TestTimer extends TimerTask{
public void run(){
System.out.println(new Date());
}
}
可是编译的时候说没有new Timer(java.lang.String,boolean)这样的构造函数,在看api里面明明写着Timer(String name, boolean isDaemon) ,这是为什么啊?
改成new Timer(true);后就可以了,还有这段程序编译完了以后就自动执行了吗?还是需要什么设置?比如必须在服务里设置,或者是在后台的页面中调用new ImportData()吗?

解决方案 »

  1.   

    你jdk的版本与你看的api版本不一致。
      

  2.   

    哦,明白了,那程序编译过后还要在页面上调用new ImportData()才行吗?还是说它会自动执行,不用任何调用呢?
      

  3.   

    当然要调用。如果你的是web应用可以配置一个servlet,然后配置它的load-on-startup参数,让这个servlet在应用发布成功就开始执行。
      

  4.   

    <servlet>
         <servlet_name>importdata</servlet_name>
         <servlet-class>zgqx.ImportData</servlet-class>
         <load-on-startup>1</load-on-startup>
        </servlet>
    是不是只写上面几行代码就可以了?为什么我配好后重启tomcat没执行呢?是不是什么地方没配对阿?还有如果不是web应用应该怎么配呢?谢谢各位大侠了
      

  5.   

    按照上面的配置就行了,你唯一需要做的就是定义zgqx.ImportData类继承HttpServlet类,然后在init方法中调用你的定时操作