Java NIO
jcpp9527
这个作者很懒,什么都没留下…
展开
-
Java NIO 杂记(四)反应器(Reactor)模式
一、概述Java NIO非堵塞技术实际是采取反应器模式,或者说是观察者(observer)模式为我们监察I/O端口,如果有内容进来,会自动通知我们,这样,我们就不必开启多个线程死等,从外界看,实现了流畅的I/O读写,不堵塞了。同步和异步区别 : 有无通知(是否轮询)堵塞和非堵塞区别 : 操作结果是否等待(是否马上又返回值),只是设计方式的不同。NIO 有一个主要的类Sele...转载 2018-07-18 16:23:08 · 216 阅读 · 0 评论 -
JAVA NIO 杂记(三)使用非阻塞模式实现高并发服务器_01
Java自1.4以后,加入了新IO特性,NIO. 号称new IO. NIO带来了non-blocking特性. 这篇文章主要讲的是如何使用NIO的网络新特性,来构建高性能非阻塞并发服务器.文章基于个人理解,我也来搞搞NIO.,求指正.在NIO之前服务器还是在使用阻塞式的java socket. 以Tomcat最新版本没有开启NIO模式的源码为例, tomcat会accept出来一个s...转载 2018-07-18 15:51:30 · 287 阅读 · 0 评论 -
Java NIO 杂记(二)NIO 开发需要注意的陷阱(转)
转自出处:http://www.cnblogs.com/pingh/p/3224990.html 陷阱1:处理事件忘记移除key在select返回值大于0的情况下,循环处理Selector.selectedKeys集合,每处理一个必须从Set中移除Iterator<SelectionKey> it=set.iterator(); While(it....转载 2018-07-17 22:20:02 · 250 阅读 · 0 评论 -
Java NIO 杂记(一) 粘包、拆包问题解决方案
1、发送端给每个数据包添加包首部,首部中应该至少包含数据包的长度,这样接收端在接收到数据后,通过读取包首部的长度字段,便知道每一个数据包的实际长度了。2、发送端将每个数据包封装为固定长度(不够的可以通过补0填充),这样接收端每次从接收缓冲区中读取固定长度的数据就自然而然的把每个数据包拆分开来。3、可以在数据包之间设置边界,如添加特殊符号,这样,接收端通过这个边界就可以将不同的数据包拆分开。...原创 2018-07-17 10:54:33 · 865 阅读 · 0 评论