这篇java的NIO编程,保证你能看懂( 二 )


首先我们看一下服务器端

这篇java的NIO编程,保证你能看懂

文章插图
 
 
这篇java的NIO编程,保证你能看懂

文章插图
 
上面把server中基本的是步骤实现了 。现在开始真正的去处理一下 。
第一种情况:链接事件处理
这篇java的NIO编程,保证你能看懂

文章插图
 
第二种情况:读写时间处理
这篇java的NIO编程,保证你能看懂

文章插图
 
到了第五步broadCast方法其实我们可以对此进行一个变化,在这里我们实现的是广播到其他所有client 。但是如果是一对一聊天的话我们就可以单播到指定client 。
这篇java的NIO编程,保证你能看懂

文章插图
 
这就是整个服务器端的开发,当然还要客户端的开发,我们同样来看看 。
(2)client端代码开发
客户端代码说实话就比较轻松一点了 。
这篇java的NIO编程,保证你能看懂

文章插图
 
我们就再来看看,客户端如何处理服务器端返回的数据 。
这篇java的NIO编程,保证你能看懂

文章插图
 
readHandler方法是如何读取呢?
这篇java的NIO编程,保证你能看懂

文章插图
 
到这一步,整个客户端的代码就算是完成了,如果你仔细的捋一遍,其实整个流程还是很清晰的 。
三、总结
虽然NIO这么好其实还是有很多缺点的,在上面的代码量其实你就可以发现了,大量的代码使得我们在构建复杂系统的时候超级麻烦,有时候正是这些技术的不完备,才造成了我们程序员工作量大,压力大,但是科技的进步毕竟是要一点一点发展的嘛 。另外说一句这个NIO还有一个大坑,就是Selector空轮询的时候,导师CPU100% 。不过这种情况我还没试过 。
想要精通NIO的话,这篇文章真的远远不够,顶多算是入门把 。想要真正认识我觉得首先要深入源码,然后就是实际场景中的使用,不过目前来看的话netty和mina框架要比java的NIO好的多,不单单是性能,更重要的是我们的开发效率 。算是在一定程度上避免了我们程序员“钱多话少死得快”的现象了吧 。




推荐阅读