同步异步阻塞非阻塞BIO-NIO-AIO
同步和异步、阻塞和非阻塞、BIO、NIO、AIO 都是与 IO 操作相关的概念,下面逐一解释:
同步和异步:同步和异步是指请求发出后是否需要等待响应。同步方式发送请求时,必须等待服务器返回结果,期间不能进行其他操作,直到收到响应后才能继续执行。异步方式发送请求后,可以继续执行其他操作,不需要等待响应,当服务器响应时,再进行处理。
-------------------
阻塞和非阻塞:阻塞和非阻塞是指等待操作是否会阻塞当前线程。阻塞方式会一直等待操作完成,期间线程处于阻塞状态,不能执行其他操作。非阻塞方式不会一直等待操作完成,可以继续执行其他操作。
BIO:BIO(Blocking IO)是一种阻塞式 IO 模型,每个请求都需要一个独立的线程进行处理,如果请求量大,会导致线程资源浪费和服务器响应延迟。
NIO:NIO(Non-blocking IO)是一种非阻塞式 IO 模型,它采用事件驱动的方式,将请求放到缓冲区中等待处理,当数据就绪时通知程序进行处理,可以使用单线程处理多个请求。
AIO:AIO(Asynchronous IO)是一种异步非阻塞式 IO 模型,采用回调函数的方式处理请求,当数据就绪时自动调用回调函数进行处理。
简单来说,BIO 适合于连接数较小、请求较短的场景,NIO 适合于连接数多、请求处理时间短的场景,AIO 适合于连接数多、请求处理时间长的场景。
综上所述,同步和异步、阻塞和非阻塞、BIO、NIO、AIO 都是 IO 操作相关的概念,它们的区别主要在于请求发出后的处理方式和操作的阻塞状态。开发者需要根据实际情况选择不同的 IO 模型和处理方式。
同步和异步:同步和异步是指请求发出后是否需要等待响应。同步方式发送请求时,必须等待服务器返回结果,期间不能进行其他操作,直到收到响应后才能继续执行。异步方式发送请求后,可以继续执行其他操作,不需要等待响应,当服务器响应时,再进行处理。
-------------------
阻塞和非阻塞:阻塞和非阻塞是指等待操作是否会阻塞当前线程。阻塞方式会一直等待操作完成,期间线程处于阻塞状态,不能执行其他操作。非阻塞方式不会一直等待操作完成,可以继续执行其他操作。
BIO:BIO(Blocking IO)是一种阻塞式 IO 模型,每个请求都需要一个独立的线程进行处理,如果请求量大,会导致线程资源浪费和服务器响应延迟。
NIO:NIO(Non-blocking IO)是一种非阻塞式 IO 模型,它采用事件驱动的方式,将请求放到缓冲区中等待处理,当数据就绪时通知程序进行处理,可以使用单线程处理多个请求。
AIO:AIO(Asynchronous IO)是一种异步非阻塞式 IO 模型,采用回调函数的方式处理请求,当数据就绪时自动调用回调函数进行处理。
简单来说,BIO 适合于连接数较小、请求较短的场景,NIO 适合于连接数多、请求处理时间短的场景,AIO 适合于连接数多、请求处理时间长的场景。
综上所述,同步和异步、阻塞和非阻塞、BIO、NIO、AIO 都是 IO 操作相关的概念,它们的区别主要在于请求发出后的处理方式和操作的阻塞状态。开发者需要根据实际情况选择不同的 IO 模型和处理方式。
全部评论
感谢分享,学习一下
感谢大佬分享
相关推荐

点赞 评论 收藏
分享
昨天 13:46
门头沟学院 硬件开发 伟大的小黄鸭在学习:我猜就是笔试几乎没用,就是用来给用人部门拖时间复筛简历的,可能用人部门筛到你简历觉得不合适就提前挂了

点赞 评论 收藏
分享
06-23 11:43
门头沟学院 Java 点赞 评论 收藏
分享
07-22 15:24
广西师范大学 大数据开发工程师 上周偶然刷到了lls的26秋招提前批开了,主包前段时间从字节实习完,秉持着投着试试的心态,认真填写了秋招的网申,提交成功的下一秒再刷新应聘页面,已经变成流程结束好夸张!是不是被机筛了,终究是双非不配了

点赞 评论 收藏
分享