java NIO

作者: 杨殿生 | 来源:发表于2019-05-30 10:59 被阅读0次

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

参考:http://tutorials.jenkov.com/java-nio/index.html

相关文章

网友评论

      本文标题:java NIO

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