andysern
andysern
采纳率6.3%
2016-09-02 05:45

ajax的长连接在tomcat造成CPU负载增加很大怎么办?

请教一下大家,我有一个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的实时页面信息等。
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

1条回答

  • devine007 devine007 5年前

    为什么不用websocket实现网页聊天

    点赞 评论 复制链接分享

相关推荐