NIO改写服务端
- 性能分析篇已经写到,阻塞模式若客户端数量达到上万十万百万,服务器的cpu、内存和线程的压力非常大,必须要进行性能改进。方案便是将服务端改写成非阻塞模式(NIO)
- 将等待连接的accept改写为ServerSocketChannel的Socket注册方法
- 读写线程也分别改写为ServerSocketChannel的Socket注册方法
相比前边案例改写的类
- TCPServer
- ClientHandler
出现的问题
- 服务端接收客户端发送的内容时,第一条是正常的,此后总是出现接收一条空数据的情况,不解(看运行实例)
- IDEA的debug和run的结果出现差异的情况。debug是正常的,run会出现上边的问题
- 服务端接收客户端的内容时,会在结尾加上回车换行符(\n\r)
运行实例
客户端
服务端
代码
注释也在里边了
链接: 百度网盘 提取码: ddjq
不足
- 线程数量太多
- 数据传输可能出现诸如粘包之类的问题
- 下篇文章会进行改进