首页 > 其他分享 >同步、异步、阻塞、非阻塞---BIO、NIO、AIO的简单理解

同步、异步、阻塞、非阻塞---BIO、NIO、AIO的简单理解

时间:2022-12-26 23:08:12浏览次数:38  
标签:BIO 同步 NIO 异步 阻塞 线程 IO 连接

概念

BIO:同步并阻塞,服务实现模式为一个连接对应一个线程,即客户端发送一个连接,服务端要有一个线程来处理。如果连接多了,线程数量不够,就只能等待,即会发生阻塞。

NIO:同步非阻塞,服务实现模式是一个线程可以处理多个连接,即客户端发送的连接都会注册到多路复用器上,然后进行轮询连接,有I/O请求就处理

AIO:异步非阻塞,引入了异步通道,采用的是proactor模式,特点是:有效的请求才启动线程,先有操作系统完成在通知服务端

简单理解阻塞、非阻塞、同步、异步

我们先来了解IO过程。

IO操作包含两个部分:

第一:IO请求

第二:实际IO读写操作

阻塞与非阻塞:主要表现在第一点发IO请求,就是调用方。阻塞就是发起IO请求之后要傻傻的等待,等待期间不能去做其他事情。反之就是非阻塞。

同步与异步:主要表现在第二点读写IO读写操作。同步与异步是说被调用方,如果操作系统帮你完成了再通知你,就是异步。反之叫同步。



标签:BIO,同步,NIO,异步,阻塞,线程,IO,连接
From: https://blog.51cto.com/wyf1226/5971112

相关文章

  • c/c++非阻塞键盘输入监听 Windows/Linux
    https://blog.csdn.net/a8821418/article/details/106492074Windows下c代码#include<conio.h>#include<windows.h>#include<iostream>usingnamespacestd;i......
  • linux下close 掉socket 之后 阻塞的recv 不会立即返回
    在开发的一个基于rtmp聊天的程序时发现了一个很奇怪的现象。在windows下当我们执行closesocket 的操作之后,阻塞的recv 会立即返回-1。而在linux 下 当我们执行 ......
  • MySQL union和union all
    用sql汇总一批数据,发现结果与系统对比老是对不上,因此检查sql捞出来的数据,单条查看select对比结果发现没区别,但是语句通过几条select+union后结果就不一样了,逐个对比,发现un......
  • Netty-BIO、NIO、AIO、零拷贝-2
    JavaBIO编程一、I/O模型1、I/O模型简单的理解:就是用什么样的通道进行数据的发送和接收,很大程度上决定了程序通信的性能2、Java共支持3种网络编程模型/IO模式:BI......
  • Java中的异常、IO与NIO面试题
    ✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进。......
  • 超硬核!!!一篇文章搞定BIO、NIO、AIO、Netty(详细基础内容+网络编程内容+代码示例)【网络编
    @[TOC](BIO、NIO、AIO、NettyBIO、NIO、AIO、Netty看不懂前面什么是BIO、NIO、AIO、Netty的话往后看,后面有从头开始全面介绍以及代码示例,文章非常长!!!非常详细!!!,让你不再......
  • nio-总结列表
    javaIO体系图  IO流的操作规律总结:1,明确体系:数据源:InputStream,Reader数据汇:OutputStream,Writer2,明确数据:因为数据分两种:字节,字符。数据源:是否是纯文本数据呢?是:R......
  • Chapter 1 Why Biology by the Number
    1.生物物理学和模型构建生物物理学是应用物理学的概念和方法研究生物各个层次结构与功能的关系,生命活动的物理,物理化学过程和物质在生命活动过程中表现的物理特性的学科,......
  • 153-Illegal mix of collations for operation 'UNION'
    使用unionall查询,报错:Illegalmixofcollationsforoperation'UNION'相同字段的编码为utf8_general_ci与utf8_unicode_ci,就会报Illegalmixofcollationsfor......
  • MySQL 5.7中如何定位DDL操作的阻塞问题
    mysql>begin; QueryOK,0rowsaffected(0.00sec) mysql>select*fromt1; +----+------+------+------+-------+ |id|name|age |num |num01| +---......