程序背景: 模拟 手机短信 收发 包括 读 、 写 当前用不在线 信息的保存 以及 离线发送等
程序设计思路 : 客户端 双线程... 发送信息 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:希望大家能推荐下 能画简单流程图的 软件... 以后 我可以把图画出来 这样就 更清晰明了了