理解BIO/NIO的基本模型

本文详细解释了BIO(阻塞IO)和NIO(非阻塞IO)的基本模型,通过高速公路与收费站的比喻,阐述了阻塞与非阻塞的区别,强调了线程状态的重要性。文中提到了关键对象,如数据缓冲区和选择器,并通过代码示例帮助理解。最后,预告了后续将讨论同步与异步的概念。
摘要由CSDN通过智能技术生成

名称的理解

BIO(Block-IO):(同步)阻塞IO

NIO(No-Block IO): (同步)非阻塞IO

AIO(asynch IO):异步(非阻塞)IO

从标题中我们可以看出主要差异点是:阻塞/非阻塞、同步/异步 , 理解这个问题的核心主要就在于理解:阻塞与非阻塞、同步与异步的差异究竟是什么。

PS:看的时候带着问题思考下,为什么没有ANIO(异步阻塞IO)?

阻塞与非阻塞

首先,我们先下个概述定义,阻塞非阻塞说的是线程的状态。

我们先从代码上看看关键的Blokc点,当我们申明ServerSoket并调用accept();方法后,由于这个Soket是运行在主线程中,这个accept后主线程会Block在这个地方{当然,如果你是New Thread来run ServerSoket 会阻塞这个新建的Tread,阻塞的运行线程。注意区分:BIO并不意味着单线程},等待Client的输入才会继续往下执行。

我们换一个理解方式,对整个信息网络理解为一个高速路+收费站的模型。

高速路上的车 == 来自客户端的数据

高速路收费站的work  ==  serverSocket ,并且在这里只有一个高速路收费员。这种情况下收费员 = 主线程 。

阻塞模型下ÿ

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值