Java NIO
Posted jx9527
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java NIO相关的知识,希望对你有一定的参考价值。
1、NIO和OIO
非阻塞NIO的提出弥补了OIO同步阻塞的不足。
OIO是面向流的,需要顺序的读取字节,不能随意改变读取指针的位置。
NIO是面向缓冲区的,引入Channel和Buffer,可以随意地读取Buffer中任意位置的数据。
NIO通过通道和通道的多路复用技术实现非阻塞(IO多路复用模型)。
OIO没有选择器,而NIO有选择器概念。
2、Channel
OIO,同一个网络连接会关联到两个流InputStream、OutputStream。
NIO,同一个连接使用一个通道表示,具备可读、可写的功能。
3、Selector
监视多个文件描述符是否可读、可写?通过选择器,一个线程可以查询多个通道的IO事件就绪状态(可读、可写、网络连接完成等)。
【优点】 系统开销小,不必为每一个网络连接创建进程/线程。
4、NIO Buffer
read: 数据从通道读取到缓冲区中, write:数据从缓冲区写入到通道中。
4.1、NIO Buffer类
位于java.nio包,内部是内存块(数组),
以上是关于Java NIO的主要内容,如果未能解决你的问题,请参考以下文章