有人能说清楚JAVA7 NIO NETTY IOCP之间的联系吗

 我来答
千锋教育
2018-08-03 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
展开全部
早期网络访问的做法是,连接以后,就等待对方应答,对方没有应答,代码就会死在那里。这称为阻塞式通讯。
后来,java 1.4 开始引入了nio, nio是非阻塞式网络通讯. 其实可以理解为系统去扫描端口,如果有返回就处理,没有的话,代码就继续做别的事。
不过nio的编码比较麻烦,虽然性能好,可是很多代码还在用阻塞,因为代码简单,很多例子上也是socket的。
然后高丽人开发了apache的mina,可以快速开发nio。
后来高丽人离开apache,开发了netty,提供了另一种调用nio的framework。
现在mina和netty是最常用的nio框架。

至于iocp,这个是个系统级的实现,其实类似nio,不过是通过操作系统来实现的。而且只支持windows。java 7以后把iocp引入,提供了快速开发的接口。不过不是很推荐使用。系统实现就表示iocp不再是跨平台的。那么实用性就差很多了。
最黑的是眼
2016-02-01 · TA获得超过9062个赞
知道大有可为答主
回答量:3537
采纳率:0%
帮助的人:988万
展开全部
IOCP:完成端口,windows平台上的一种高性能网络模型。

NIO:jdk提供的一种非阻塞的通讯类库。NIO中的selector,根据操作系统的不同,会对应不同的实现方式。JDK7下,Windows下目前还是select模型(不过在jdk7的源码中确实有iocp.c,但是没有找到调用o(╯□╰)o);linux 2.6内核下epoll,低版本的没试过,可能是poll。
Netty:基于NIO开发的网络库。所以在windows下仍然是select。

我做过测试,windows下nio性能要比linux的epoll模式差不少,尤其是持有大量的连接后,cpu开销明显增大。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式