用个线程吧, 读完数据就sleep5分钟, 然后起来继续读数据

解决方案 »

  1.   

    我是参照了网上一个例子
    xml:里面
     <listener> 
            <listener-class>ContextListener</listener-class> 
        </listener>  
    ContextListener.java
    import java.io.IOException;
    import java.io.PrintWriter;import javax.servlet.ServletContextEvent;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;public class ContextListener { /**
     * Constructor of the object.
     * @param event 
     */ public ContextListener() {
    super();  
    }  private   java.util.Timer   timer   =   null;  
     
     
      public   void   init(ServletContextEvent   event)   {   
      timer   =   new   java.util.Timer(true);   
      event.getServletContext().log("定时器已启动");     
      timer.schedule(new   MyTask(event.getServletContext()),   0,  20*1000);   
      event.getServletContext().log("已经添加任务调度表");   
      }   
      
      
      public   void   contextDestroyed(ServletContextEvent   event)   {   
      timer.cancel();   
      event.getServletContext().log("定时器销毁");   
      }     
    }
    MyTask.java
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.Calendar;
    import java.util.*;import javax.servlet.ServletConfig;
    import javax.servlet.ServletContext;
    import javax.servlet.ServletException;
    public class MyTask extends TimerTask { /**
     * Constructor of the object.
     */
     private   static   final   int   C_SCHEDULE_HOUR   =12;   
      private   static   boolean   isRunning   =   false;   
      private   ServletContext   context   =   null;   
      
      public   MyTask(ServletContext   context)   {   
      this.context   =   context;   
      }   
         
      public   void   run()   {   
      Calendar   cal   =   Calendar.getInstance();     
      if   (!isRunning)   {     
      if   (C_SCHEDULE_HOUR   ==  12)   {     
      isRunning   =   true;     
      context.log("开始执行指定任务");   
        
      //TODO   添加自定义的详细任务,以下只是示例   
      Cookie c=new Cookie();
      String csv="http://finance.yahoo.com/d/quotes.csv?s="+"601988.SS"+"&f=sl1d1t1c1ohgv&e=.csv";
      c.downLoadFile(csv);
      int   i   =   0;   
      while   (i++   <   10)   {   
      context.log("已完成任务的"   +   i   +   "/"   +   10);   
      }     
      isRunning   =   false;   
      context.log("指定任务执行结束");     
      }     
      Main m;
      }   else   {   
      context.log("上一次任务执行还未结束");   
      }   
      }     /**
     * Destruction of the servlet. <br>
     */
    public void destroy() {
     // Just puts "destroy" string in log
    // Put your code here
    } }这样写我的函数不能运行,能不能帮忙看看