jsp里怎么设置超时啊?

dd121011 2008-04-21 01:23:06
我想设置一个超时自动调用一段代码的功能,怎么设置啊?
比如我想在jsp里设置超时调用下面这段代码:
<%String name = (String) session.getValue("userid");
String name1="你好";
Hashtable userlist = (Hashtable) application.getAttribute("userlist");
userlist.remove(name); //在线用户列表删除此用户
application.setAttribute("userlist", userlist); //更新用户application中的列表
Vector v=(Vector)session.getAttribute("chatvector");

//System.out.println("exit.jsp's vector is:" + v);
v=null;
application.setAttribute("chatwords",v);//更新application里的聊天记录
System.out.println("exit");
System.out.println("kefu2 userlist's size is:" + userlist.size());%>
代码该怎么改啊。。。
...全文
154 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
dd121011 2008-04-22
  • 打赏
  • 举报
回复
哈 。。
看出来了。。。。
给着玩吗。。。
ROBINAPOLLO 2008-04-21
  • 打赏
  • 举报
回复
都是我的贴 大哥
ROBINAPOLLO 2008-04-21
  • 打赏
  • 举报
回复
恩 没问题提。。你尝试下。。
dd121011 2008-04-21
  • 打赏
  • 举报
回复

谢谢哥们
timer可以设置的最长时间是多少啊?
我需要设置的大约是30分钟。。这个可以吗?
ROBINAPOLLO 2008-04-21
  • 打赏
  • 举报
回复
找了个例子~!@~!@~!@
import Java.io.IOException;
import java.util.Timer;

public class TimerTest ...{

public static void main(String[] args)...{
Timer timer = new Timer();
timer.schedule(new MyTask(), 1000, 2000);//在1秒后执行此任务,每次间隔2秒,假如传递一个Data参数,就可以在某个固定的时间执行这个任务.
while(true)...{//这个是用来停止此任务的,否则就一直循环执行此任务了
try ...{
int ch = System.in.read();
if(ch-'c'==0)...{
timer.cancel();//使用这个方法退出任务

}
} catch (IOException e) ...{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}


static class MyTask extends java.util.TimerTask...{

@Override
public void run() ...{
// TODO Auto-generated method stub
System.out.println("________");
}
}




}






ROBINAPOLLO 2008-04-21
  • 打赏
  • 举报
回复
还有一张方法就是用线程来实现。。。
TimerTask那定义一个变量
private static boolean going = false;

然后修改run方法

public void run()
{
if (going)return;
going = true;
//做你的事情

going = false;
}

这个可以保证2秒执行一次,如果一次任务超过两秒,下一次执行会在开始就结束。等待两秒后再检查

如果希望前一次任务若超过两秒,后一次直接在前一次执行结束立即开始
可以换用Thread
Thread t = new Thread(){
private static boolean going = true;
public void run()
{
while(going){
int start = System.currentTimeMillis();
//做你的事
int cost = System.currentTimeMillis() - start;
if (cost < 2000) {
try{
sleep(2000 - cost);
}catch(Exception ex){}
}
}

}
};
t.start();
ROBINAPOLLO 2008-04-21
  • 打赏
  • 举报
回复
但以上的方法不适合长时间的定时 ,,
如果是长时间的定时,,可以尝试用ServletContextListener监听器来进行数据的定时处理
ROBINAPOLLO 2008-04-21
  • 打赏
  • 举报
回复
可以用JAVA的Timer来做
Timer timer=new Timer();
timer.schedule(new ListByDayTimerTask(),10000,86400000);
这里的ListByDayTimerTask类必须集成实现TimerTask里面的run()方法。
楼主可以尝试用下

81,094

社区成员

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

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