IO和NIO

IONIO
面向流面向块(缓冲)
阻塞IO非阻塞
没有选择器有选择器

面向流和面向块

IO面向流,从流中读取字节或字符,没有被缓存到某个地方;NIO是面向块的,首先将数据读到一个缓冲区中,可以控制读取什么位置的数据,但是需要检查缓冲区中是否有想要的数据

阻塞和非阻塞

IO流是阻塞的,也就是当一个线程读或写时,线程进入阻塞状态,知道数据被读取完或写完;NIO有阻塞模式和非阻塞模式,通过返回值判断缓冲区中是否有数据,没有数据的话可以去做别的事情,不阻塞

选择器

NIO有选择器,允许一个单独的线程来监视多个输入通道。一个选择器可以有多个通道,然后一个单独的线程监视这些通道。
在这里插入图片描述

例如,BufferedReader可以一次读取一行,IO是阻塞的,name调用.readLine()方法时线程阻塞,直到读取完一行才恢复。
而NIO,读取数据时,可能读了一些,但是还有些没读完,需要等待读完了才读入缓存,因此需要检查缓冲区的数据。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值