Java NIO和IO的区别

IO的主要内容

  • File
  • InputStream
  • OutputStream
  • Reader
  • Writer
  • RandomAccessFile

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

  • Buffer
  • Channels
  • Selector

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


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


Java NIO有选择器,允许一个单独的线程监视多个输入通道,可以注册多个通道使用一个选择器,可以使用一个单独的线程来选择通道:这个通道已经有可以处理的输入,或者选择以准备写入的通道。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值