IO详细介绍

几个概念先理解:

1.阻塞(Block)和非阻塞(Non-Block):

阻塞:往往需要等待缓冲区中的数据准备好过后才处理其他的事情,否则一直等待在那里。
非阻塞:当我们的进程访问我们的数据缓冲区的时候,如果数据没有准备好则直接返回,不会等待。如果数据已经
准备好,也直接返回。


2.同步和异步

同步和异步都是基于应用程序和操作系统处理 IO 事件所采用的方式。比如同步:是应用程序要直接参与 IO 读写
的操作。异步:所有的 IO 读写交给操作系统去处理,应用程序只需要等待通知。


同步方式在处理IO 事件的时候,必须阻塞在某个方法上面等待我们的IO 事件完成(阻塞IO 事件或者通过轮询IO
事件的方式),对于异步来说,所有的IO 读写都交给了操作系统。这个时候,我们可以去做其他的事情,并不需要去完
成真正的 IO 操作,当操作完成 IO 后,会给我们的应用程序一个通知。

 

3.BIO和NIO的区别:

bio是面向流的,nio是面向缓冲区的。bio是阻塞的,nio是非阻塞的(反应堆 Reactor)。

bio的阻塞:Java BIO 的各种流是阻塞的。这意味着,当一个线程调用read() 或 write()时,该线程被阻塞,直到有一些数据被
读取,或数据完全写入。该线程在此期间不能再干任何事情了。 

nio的非阻塞: Java NIO 的非阻塞模式,使一个线程从某通道发送请
求读取数据,但是它仅能得到目前可用的数据,如果目前没有数据可用时,就什么都不会获取,这时而不是保持线程阻塞,
所以直至数据变的可以读取之前,该线程可以继续做其他的事情。 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值