JAVASE Socket编程 CPU 占用率高问题 及 解决

程序背景:  模拟 手机短信 收发  包括 读 、 写   当前用不在线 信息的保存 以及 离线发送等

 

程序设计思路 :  客户端  双线程...  发送信息 Thread

                                             接收信息  Thred

                      好处: 不会产生阻塞..

                     服务器端  多线程:  两个 ServerSocket  用于 等待  客户端的  接收  和 发送

 

遇到问题: 调试期间,单 客户端成功连接后,CPU 占用率 高达 50%

程序简化代码 如下: 下面代码中 我会 标注出 出现问题的 地方 

      客户端 如下 main方法中的代码  注意 下面代码 仅仅是为了说明问题..不是 完整的实例程序

      public static void main ( String[] args )

      {

            new Socket ( "127.0.0.1", 5678 );

            new Socket ( "127.0.0.1", 8988 );

             //下面代码 产生 占用率高的问题  

              while (true)

              {

              }

      }

 

问题产生原因:  while true 循环 是一个死循环,同时因为 while 循环的不间断执行,导致频繁的访问资源,使cpu 占用率 过高

解决办法: while  true  循环中 采用阻塞似的 方式,例如 输入流的 Scanner 中的 .nextInt()方法等

此类问题,在服务器端,用户端 的 多线程 程序中 run 方法中 也出现过 ,希望能给大家提个醒.. 避免类似的错误发生...

 

PS:希望大家能推荐下 能画简单流程图的 软件... 以后 我可以把图画出来 这样就 更清晰明了了

 

转载于:https://www.cnblogs.com/anger-coder/archive/2012/08/17/2644679.html

你可能感兴趣的:(JAVASE Socket编程 CPU 占用率高问题 及 解决)