1 通道和缓冲(channel buffer)
BIO也就是java传统的IO是基于字符流,字节流,而NIO是基于通道channel和缓冲区buffer进行操作的,数据总是从通道读取到缓冲区,或者从缓冲区写入通道中
image.png
1.1 Channel分类
FileChannel
DatagramChannel
SocketChannel
ServerSocketChannel
1.2 Buffer分类
ByteBuffer
CharBuffer
DoubleBuffer
FloatBuffer
IntBuffer
LongBuffer
ShortBuffer
非阻塞
BIO是阻塞的,NIO可以非阻塞使用I/O,当线程从通道读取数据到缓冲区时,线程还是可以进行其他事情。当数据被写入到缓冲区时,线程可以继续处理它。从缓冲区写入通道也类似
选择器(selector)
Java NIO引入了选择器的概念,选择器用于监听多个通道的事件(比如:连接打开,数据到达)。因此,单个的线程可以监听多个数据通道。
image.png
网友评论