Timer,Timertask的使用

来源:互联网 发布:java游戏开发思路 编辑:程序博客网 时间:2024/04/29 18:50
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);
        }

    }

    ……
}


原创粉丝点击