默认
发表评论 8
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
这个问题网上答案一大堆,但是很多都是太理论化,很难懂。要真正讲清楚是需要对操作及底层的io工作方式和原理很了解才能真正透彻理解。

我个人理解是:传统的阻塞io所谓的面向流的方式,其实是所有早期程序的io读写方式,你不管是看汇编、c、还是比较现代的java、c++都是这样,换句话说高性能读写场景下,这种读写方式其实是过时的方式(但有些场景下还是必须得用这个),谁都知道内存操作是很快的,但早期的计算机内存都这么小,所以这种以“流”这主的io方式也是必然选择。而现在内存越来越大,现在操作系统顺应了这种潮流:也就是NIO所谓的“块”读写,也就是利用操作系统的底层代码,高效地把数据成块地读到内存中,而由NIO的selector决定何时放到channel中,毫无疑问这个过程都是高速的:一是利用os自已的低层特性、二是利用大块内存的高效交换。

我说的不一定很准确,但大致是这么个意思,之前群主有发过一篇:Java新一代网络编程模型AIO原理及Linux系统AIO介绍,感觉讲的还行,但也是不太透彻,看看总归是有好处。这些新的IO特性都是跟操作系统紧密相关的(比如java里新出的AIO就是这样:老式的操作系统不支持,java也就玩不了)。

还有一篇文章很好,你也可以看看:http://www.ibm.com/developerworks/cn/education/java/j-nio/
签名: 国庆长假还没有缓过来,请让我静一静,产品狗死远点...
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部