美文网首页
初识netty-NIO BIO

初识netty-NIO BIO

作者: 程南swimming | 来源:发表于2019-05-29 14:19 被阅读0次

https://blog.csdn.net/matthew_zhang/article/details/71328697

https://tech.meituan.com/2016/11/04/nio.html

BIO:阻塞

NIO:非阻塞

异步:异步是底层实现的一个东西 目前很多东西还都是同步的  只不过有阻塞和非阻塞之分

NIO一个重要的特点是:socket主要的读、写、注册和接收函数,在等待就绪阶段都是非阻塞的,真正的I/O操作是同步阻塞的(消耗CPU但性能非常高)。

Java NIO的selector允许一个单独的线程同时监视多个通道,可以注册多个通道到同一个选择器上,然后使用一个单独的线程来“选择”已经就绪的p通道。这种“选择”机制为一个单独线程管理多个通道提供了可能。

这就给了我们不开线程利用CPU的最好机会:如果一个连接不能读写(socket.read()返回0或者socket.write()返回0),我们可以把这件事记下来,记录的方式通常是在Selector上注册标记位,然后切换到其它就绪的连接(channel)继续进行读写。

而BIO和NIO简单对比就是,NIO解决了BIO的痛点,把BIO中请求IO过程中的两步(请求连接+连接有真实IO请求时候的处理过程)分离开来,不让一个线程负责这两步。NIO就是一个线程负责所有请求连接但不处理IO操作,该线程只负责把连接注册到多路复用器上,多用复用器轮询到连接有IO请求时候再启动其它线程处理IO请求操作。

相关文章

网友评论

      本文标题:初识netty-NIO BIO

      本文链接:https://www.haomeiwen.com/subject/hfcytctx.html