java NIO

2019-05-30  本文已影响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

上一篇 下一篇

猜你喜欢

热点阅读