NIO 与 BIO 小结

1. 

BIO 是阻塞式的

服务器端调用Read(Buffer)为例:有可能出现inputStream的缓存RecvQ读完了但是客户端的sendQ仍然在准备数据,此时服务器就会阻塞等待客户端传输数据

服务器端调用Write(Buffer)为例:有可能出现outputStream的缓存SendQ已经满了但是服务器端的RecvQ仍然满的,此时客户端同样会处于阻塞等待服务器消化RecvQ直到RecvQ可以容纳SendQ的数据

NIO是非阻塞式

引入了Buffer的概念,但是底层仍然是TCP 相关的RecvQ和SendQ。使用Selector来监控缓存状态,不受RecvQ和SendQ之间的沟通影响。

Read(Buffer): 如果出现RecvQ读完了,那么就会结束本次Read事件,等待下一次selector来通知。

Write(Buffer):如果SendQ满了,那么结束本次Write事件,等待下一次selector通知


2. BIO;NIO都是同步的

通俗来说:所谓同步就是方法调用后返回的那一刻就是该方法结束的时刻。异步就是方法调用以后返回了值但方法并没有结束。


3. NIO中如果RecvQ不能一次接收完数据会怎样?

猜测:结束本次Read/Write事件



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值