java timer停止的问题??求教

qiaogn 2013-09-06 03:07:40
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线程么?那该怎么全部结束呢?还是因为?
请教大侠们,谢了!没分了,不好意思
...全文
282 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
qiaogn 2013-09-10
  • 打赏
  • 举报
回复
引用 4 楼 suciver 的回复:
[quote=引用 3 楼 qiaogn 的回复:] 另,在请教一下,如果是一般的java类该怎么做呢?全局变量也行不通啊?
web请求的怎么会是一般的java类呢,除非你用了像struts2这样的框架。不知道你说的一般的java类是什么样的 [/quote]用的dwr框架,能将java类专为js调用。
suciver 2013-09-06
  • 打赏
  • 举报
回复
引用 3 楼 qiaogn 的回复:
另,在请教一下,如果是一般的java类该怎么做呢?全局变量也行不通啊?
web请求的怎么会是一般的java类呢,除非你用了像struts2这样的框架。不知道你说的一般的java类是什么样的
qiaogn 2013-09-06
  • 打赏
  • 举报
回复
另,在请教一下,如果是一般的java类该怎么做呢?全局变量也行不通啊?
qiaogn 2013-09-06
  • 打赏
  • 举报
回复
引用 1 楼 suciver 的回复:
楼主你仔细分析下你的代码就知道了,你每次请求上来都去new一个timer实例,当你启动后请求结束了这个timer实例在跑了,当你发出结束请求的时候又new一个timer实例这个timer并不是你启动的那个timer。所以你无法停止原来的事件。 要想停止原来启动的事件你可以把Timer timer=new Timer();作为servlet的成员变量,post或get方法之中就不用在new了直接用这个timer就行了。因为servlet是一个服务应用于多个请求的,可以保证你的timer是同一个对象
我知道可能是这边的问题,就是不知道该怎么解决。谢了
suciver 2013-09-06
  • 打赏
  • 举报
回复
楼主你仔细分析下你的代码就知道了,你每次请求上来都去new一个timer实例,当你启动后请求结束了这个timer实例在跑了,当你发出结束请求的时候又new一个timer实例这个timer并不是你启动的那个timer。所以你无法停止原来的事件。 要想停止原来启动的事件你可以把Timer timer=new Timer();作为servlet的成员变量,post或get方法之中就不用在new了直接用这个timer就行了。因为servlet是一个服务应用于多个请求的,可以保证你的timer是同一个对象

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧