首页 > 其他分享 >BIO、NIO、AIO是什么有什么区别

BIO、NIO、AIO是什么有什么区别

时间:2023-08-17 09:00:08浏览次数:47  
标签:BIO NIO 模型 阻塞 AIO 线程

BIO、NIO、AIO是Java编程语言中的三种不同的I/O模型。

  1. BIO(Blocking I/O)同步阻塞式,是传统的阻塞式I/O模型,它是单线程的,每个I/O操作都会阻塞当前线程,直到数据准备好或者操作完成。在BIO模型中,每个连接都需要一个独立的线程来处理,因此在高并发场景下,线程数量会非常庞大,导致资源消耗较大。

  2. NIO(Non-blocking I/O)同步非阻塞 是Java 1.4引入的新的I/O模型,它使用了事件驱动的方式来处理I/O操作。NIO模型中,一个线程可以处理多个连接,通过Selector选择器来监听多个通道的事件,当某个通道有事件发生时,才会进行处理。NIO模型中的通道是非阻塞的,可以通过设置非阻塞模式来实现。相对于BIO模型,NIO模型在处理大量连接时,线程数量大大减少,资源消耗也相应减少。

  3. AIO(Asynchronous I/O)异步非阻塞 是Java 1.7引入的新的I/O模型,它是基于事件和回调机制的。AIO模型中,应用程序发起一个I/O操作后,不需要等待操作完成,而是继续做其他事情。当操作完成后,系统会通知应用程序进行处理。AIO模型在处理大量并发连接时,能够充分利用系统资源,性能表现较好。

  总结:
- BIO是传统的阻塞式I/O模型,每个连接需要一个独立的线程,适用于连接数较少的情况。
- NIO是事件驱动的非阻塞式I/O模型,一个线程可以处理多个连接,适用于连接数较多的情况。
- AIO是基于事件和回调机制的I/O模型,应用程序发起操作后可以继续做其他事情,适用于高并发场景。

标签:BIO,NIO,模型,阻塞,AIO,线程
From: https://www.cnblogs.com/tomygzz/p/17636671.html

相关文章

  • burpsuite靶场----SQL注入3----oracle的union注出版本
    burpsuite靶场----SQL注入3----oracle注入推荐burpsuite插件https://github.com/smxiazi/xia_sqllinux上安装oraclemysql的详细学习可以下载小皮面板或者手动安装oracle这里使用docker安装,因为oracle手动安装比较麻烦这里我参照这位师傅的博客在linux上搭建oracle数据库ht......
  • 我的BIOS之行7-protocol的使用与创建
    protocol简介从语言上来看,protocol包含了属性和函数指针的结构体,从功能上看,protocoll是提供者与使用者对服务方式的一种约定。其实我们不难看出UEFI中的Protocol引入了面向对象的思想。每一个protocol都必须要有一个唯一的GUID。如我的github上面的code一样,在github上我每章都有......
  • 我的BIOS之行1-Introduction
    前言想对自己在本月所学的东西做一个总结,因而产生了写本系列博客的冲动,由于工作较为繁忙,不能及时更新,敬请原谅CPUIntroduction&Multi-Processor本节博客将简单介绍CPU的情况。1、CPU简介CPU–TheCentralProcessorUnitisthehardwarewithinacomputersystemwhic......
  • 我的BIOS之行2-Keyboard Controller 简介
    KeyboardController简介主板的键盘有一块专用的接口芯片,一般是采用一块单片微处理器8042(现在大多已集成在南桥或SIO里)。它控制整个键盘的工作,包括加电自检、键盘扫描码的缓冲以及与主板的通讯。INT09H是H/W中断,对应IRQ1,INT16H是一个S/W中断。当键盘的一个键被按下时,键盘接......
  • 我的BIOS之行3-UEFI的简介
    UEFI的世界观如果有人对BIOS有兴趣,那么不得不提UEFI了。当然笔者这边只是代码与说明的搬运工,通过UEFI组织的官方文档来带大家了解UEFI。当然您要是觉得笔者就是个DB,想直接翻UEFI的文档,不想看笔者的瞎逼文章的话,请直接点击这里,自行下载看就是了。UEFI的简介文章开头就开始介绍......
  • union注入
    数据库information_schema 包含所有mysql数据库的简要信息↓ 其中包含有两个所需数据表 tables  columns表名集合表列名集合表 查找数据库security中的表名第一步确定基本查询语句字符型(闭合符号)/数字型查询语句列数group......
  • SAP CDS view 里 UNION 操作的用法
    下图是SAPCDSviewUnion操作的语法和例子:SAPCDS(CoreDataServices)视图是SAPHANA数据库在ABAP层面上的抽象和逻辑视图。它不仅提供了一种SQL类型的语言(DataControlLanguage,DCL)来查询和操作数据,还提供了各种特性和功能以支持应用程序开发。在SAPCDS中,Union操......
  • Netty源码学习1——NioEventLoopGroup的初始化
    系列文章目录和关于我零丶引入netty源码学习中,大家maybe都接触到如下的helloworld——netty客户端启动的demo:映入眼帘的第一个类就是NioEventLoopGroup,很多文章上来就是是Netty中的核心类,啥Channel,Pipeline,Context,Boostrap一通劈里啪啦,我看起来比较费劲。so本文不会上来就给......
  • minio
    #MinIOServer安装1.2使用命令在root目录下创建minio文件夹,打开minio文件夹,下载miniocdmkdir-p/opt/miniocd/opt/miniowgethttps://dl.min.io/server/minio/release/linux-amd64/minio1.3下载完成后会在当前目录下出现一个minio目录,为该文件添加可执行权限chmod+......
  • Grafana监控minio的极简方法
    Grafana监控minio的极简方法背景想监控一下minio的部分信息.使用过程中需要关注的内容挺多的.只看简单的node感觉已经不够了.所以想监控易一下.方式和方法minio其实集成了prometheus支持的监控指标只需要在配置文件中放开就可以了.虽然可以使用mc的命令createb......