您的位置:首页 > 编程语言 > Java开发

Java NIO和IO的区别

2016-06-19 19:52 344 查看
IO的主要内容

File

InputStream

OutputStream

Reader

Writer

RandomAccessFile

NIO有以下核心的数据抽象类型。

Buffer

Channels

Selector

IO是面向流(Stream)的,NIO是面向缓冲(Buffer)的。

面向流就是每次都是流中读取一个或多个字节/字符,直至读完所有的字节/字符,不能前后移动流中的数据;面向缓冲是将数据读取到一个他稍后处理的缓冲区,需要的时候可以在缓冲区中移动。

IO中的各种流都是阻塞的,当一个线程调用read()或write()时,该线程被阻塞,直到有一些数据被读取或数据完全写入。这个线程在这个期间不能干任何事,NIO的非阻塞模式,一个线程从某个通道发出请求读取数据,但它仅能得到当前可用的数据,如果没有数据可用时,就什么都不获取,而不是保持线程阻塞,该线程还可以做其他事情。线程通常将非阻塞IO的空闲时间用于其他通道执行IO操作,所以一个单独的线程可以管理多个输入和输出通道。

Java NIO有选择器,允许一个单独的线程监视多个输入通道,可以注册多个通道使用一个选择器,可以使用一个单独的线程来选择通道:这个通道已经有可以处理的输入,或者选择以准备写入的通道。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: