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

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 2016-09-02 05:50
    关注

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

    评论

报告相同问题?

悬赏问题

  • ¥15 fluent的在模拟压强时使用希望得到一些建议
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 Web.config连不上数据库
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。
  • ¥15 怎么配置广告联盟瀑布流
  • ¥15 Rstudio 保存代码闪退