jsp+servlet实现在页面点击开始和结束按钮,在servlet能开始一个timer任务。servlet关键代码如下
String value=request.getParameter("value").trim();  jsp传参,为open或close;
System.out.println("__value"+value);                 
final Timer t1=new Timer();   实例化timer
if(value.equals("open")) {     为open执行mytask任务   
 t1.schedule(new MyTask(),1000,5000);}
if(value.equals("close")){//这个是用来停止此任务的
 try {
   Thread.sleep(2000);
   t1.cancel();
    } catch (InterruptedException e) {
e.printStackTrace();
}
为什么点击结束无法终止呢 ?点击开始再次点击结束的时候又一次实例化了一个timer线程么?那该怎么全部结束呢?还是因为?
请教大侠们,谢了!没分了,不好意思

解决方案 »

  1.   

    楼主你仔细分析下你的代码就知道了,你每次请求上来都去new一个timer实例,当你启动后请求结束了这个timer实例在跑了,当你发出结束请求的时候又new一个timer实例这个timer并不是你启动的那个timer。所以你无法停止原来的事件。
    要想停止原来启动的事件你可以把Timer timer=new Timer();作为servlet的成员变量,post或get方法之中就不用在new了直接用这个timer就行了。因为servlet是一个服务应用于多个请求的,可以保证你的timer是同一个对象
      

  2.   

    另,在请教一下,如果是一般的java类该怎么做呢?全局变量也行不通啊?
      

  3.   

    web请求的怎么会是一般的java类呢,除非你用了像struts2这样的框架。不知道你说的一般的java类是什么样的
      

  4.   

    web请求的怎么会是一般的java类呢,除非你用了像struts2这样的框架。不知道你说的一般的java类是什么样的
    用的dwr框架,能将java类专为js调用。