有人能说清楚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不再是跨平台的。那么实用性就差很多了。
后来,java 1.4 开始引入了nio, nio是非阻塞式网络通讯. 其实可以理解为系统去扫描端口,如果有返回就处理,没有的话,代码就继续做别的事。
不过nio的编码比较麻烦,虽然性能好,可是很多代码还在用阻塞,因为代码简单,很多例子上也是socket的。
然后高丽人开发了apache的mina,可以快速开发nio。
后来高丽人离开apache,开发了netty,提供了另一种调用nio的framework。
现在mina和netty是最常用的nio框架。
至于iocp,这个是个系统级的实现,其实类似nio,不过是通过操作系统来实现的。而且只支持windows。java 7以后把iocp引入,提供了快速开发的接口。不过不是很推荐使用。系统实现就表示iocp不再是跨平台的。那么实用性就差很多了。
展开全部
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开销明显增大。
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开销明显增大。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询