请教一下大家,我有一个ajax的长连接(超时为0,无限),在服务器连接代码是在主线程里去while阻塞,然后收到连接后开启子线程去输出,程序运行是正常的,可以一直接收到服务器的推送。
switch(what){
case "test":
Thread father = new Thread(new Runnable(){
public void run(){
a = true;
while(a){
if(map.get("status")=="ok"){
a = false;
}
}
Thread son = new Thread(new Runnable(){
public void run(){
out.print("收到你的消息");
map.put("status","nothing");
}
});
son.start();
try{
son.join();
}catch(Exception ex){
out.print(ex);
}
}
});
father.start();
try{
father.join();
}catch(Exception ex){
out.print(ex);
}
break;
但是我发现一个问题,在tomcat下,每用浏览器进入页面,CPU负载就增加20%左右,基本上如果开3个页面服务器就挂掉了。我怀疑是否是ajax的长
连接在进入服务器后,while阻塞增加了CPU负载,这个要怎么解决呢?
应该这个有成熟的解决办法吧,ajax的长连接问题,很多web im都是这样,还有web的实时页面信息等。