Timer,Timertask的使用

    技术2022-05-11  77

    TimerTask task  =   new  TimerTask()  {public void run() {    try     {doWhat(); //我想在这里可以得到传值    }    catch (IOException e)     {System.err.println(e);    }         }};Timer timer = new Timer();timer.schedule(task,date);//doWhat()定期执行 .

    因为是Anonymous class的原因,所以无法对run()中的参数进行传值

     

    关于 Class 的类型,有下面几个说法,比较容易混淆,它们不是并列的概念:    Anonymous Class    Inner Class    Member Class    Nested Class

    而下面的 Class,并不是上面这些“特殊”的 Class 类型,而只是“普通”的 Class,唯一有点特别的是,它不是占据一个单独的 .java 文件,而是写在 MyServlet.java 文件里面,跟 MyServlet 并列。至于要把从 HTTP request 里面得到的参数传给它,就可以像下面这样做(以下内容都在 MyServlet.java 文件中):

    public   class  MyServlet  extends  HttpServlet  {    void doPost(HttpServletRequest req, HttpServletResponse resp) {        ……        Timer timer = new Timer();        timer.schedule(new Task( req.getParameter("id") ), date);        ……    }} class  Task  extends  TimerTask {    private String param;    public Task(String param) this.param = param; }    public void run() {        try  {            doWhat(param);        } catch (IOException e) {            System.err.println(e);        }    }    ……}


    最新回复(0)