java timer停止的问题??求教
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线程么?那该怎么全部结束呢?还是因为?
请教大侠们,谢了!没分了,不好意思
------解决方案--------------------楼主你仔细分析下你的代码就知道了,你每次请求上来都去new一个timer实例,当你启动后请求结束了这个timer实例在跑了,当你发出结束请求的时候又new一个timer实例这个timer并不是你启动的那个timer。所以你无法停止原来的事件。
要想停止原来启动的事件你可以把Timer timer=new Timer();作为servlet的成员变量,post或get方法之中就不用在new了直接用这个timer就行了。因为servlet是一个服务应用于多个请求的,可以保证你的timer是同一个对象