尚硅谷Netty系列学习笔记一《BIO、NIO、AIO简单介绍》

目录

前言:

同步是什么意思?

异步是什么意思?

阻塞是什么意思?

非阻塞是什么意思?

介绍Netty以及IO模型

BOI:同步并阻塞

NIO:同步非阻塞

AIO:异步非阻塞

下一节:尚硅谷Netty系列学习笔记二《BIO代码简单示例》


前言

了解Netty之前需要熟悉 同步、异步、阻塞、非阻塞都是什么意思。

同步是什么意思?

A调用B,需要A主动等待B处理完后返回结果!

例如:去书店,问老板  有没有xxx书,老板说等一下啊,我去找一下。你必须等待老板找完后给你返回结果!

异步是什么意思?

A调用B,A无需主动等待B的返回结果,B处理完通知A即可

例如:去书店,问老板  有没有xxx书,老板说,我去找一下。找完了给你打电话,你无需z等待老板找完!

阻塞是什么意思?

A调用B,B处理中,A一直等待的过程中,其他事什么也不做,直到B处理完毕后。

例如:去书店,问老板  有没有xxx书,老板说等一下啊,我去找一下。

然后你就等,等待过程中什么也不干。这就是阻塞了。

非阻塞是什么意思?

A调用B,B处理中,A先做其他的事情,B处理完之后,A再回来处理结果。

例如:去书店,问老板  有没有xxx书,老板说等一下啊,我去找一下。

如果你等的过程中去做一些其他的事(玩一会、看会书、聊会天),那就是非阻塞了

介绍Netty以及IO模型

Netty 是一个异步的,基于事件驱动的网络应用框架,用于快速开发高性能,高可靠性的网络IO程序。

事件驱动:可以理解为 点击一个按钮,触发一个点击事件,然后执行相关的方法!在这里,事件指的是 连接、断开、读、写等等类似的事件!

java支持三种IO模型 BOI、NIO(Netty是基于NIO之上再次封装的)、AIO

BOI:同步并阻塞

服务器的处理方式为:当客户端有连接请求时,服务器会为这个连接单独创建一个线程与之通信(就是收发数据)!

如果有多个客户端连接,那就需要创建多个线程来处理!

并且客户端连接后也并非一直需要读取操作。那么在空闲的时候,该线程就会阻塞中(等待数据传输)。大好的线程白白浪费了。

该模式的弊端如下:

1.一个连接一个线程,对硬件资源要求高!无法支撑大并发连接数

2.每个连接并不总是在IO操作,那么空闲的时候,该线程就会阻塞等待IO操作。浪费线程资源!

NIO:同步非阻塞

服务器实现模式为 一个线程处理多个请求(连接),即客户端发送的链接请求都会注册到多路复用器上,多路复用器轮询到连接有I/O请求就进行处理。简单示例:

这样,一个线程可以维护多个连接,提高线程效率、提高并发连接数。后续会讲到Selector(选择器)

AIO:异步非阻塞

目前不太成熟,故没有深入了解,感兴趣的可以自行去了解

下一节:尚硅谷Netty系列学习笔记二《BIO代码简单示例》

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值