IO-BIO概述

news/2024/10/19 2:19:08/

介绍

​ BIO就是: blocking IO,同步阻塞IO。应用程序向操作系统请求网络IO操作,这时应用程序会一直等待;另一方面,操作系统收到请求后,也会等待,直到网络上有数据传到监听端口;操作系统在收集数据后,会把数据发送给应用程序;最后应用程序受到数据,并解除等待状态。

  • 阻塞IO非阻塞IO

​ 主要描述的是程序请求操作系统IO操作后,如果IO资源没有准备好,那么程序该如何处理的问题: 前者等待后者继续执行(并且使用线程一直轮询,直到有IO资源准备好了)

  • 同步IO非同步IO

​ 主要描述的是操作系统在收到程序请求IO操作后,如果IO资源没有准备好,该如何响应程序的问题: 前者不响应,直到IO资源准备好以后;后者返回一个标记(好让程序和自己知道以后的数据往哪里通知),当IO资源准备好以后,再用事件机制返回给程序。

传统BIO问题

​ 同一时间,服务器只能处理一个客户端的请求处理,除非采用多线程方式。完全不能抗住高并发。

多线程-伪异步

但是使用线程来解决这个问题实际上是有局限性的:

1)虽然在服务器端,但是请求的处理交给了一个独立线程进行,虽说数据处理可以多线程处理,但是请求毕竟是需要一个一个来。

2)**在linux系统中,可以创建的线程是有限的。**以通过cat /proc/sys/kernel/threads-max 命令查看可以创建的最大线程数。但是线程越多,CPU切换所需的时间也就越长,用来处理真正业务的需求也就越少。

3)创建一个线程是有较大的资源消耗的。JVM创建一个线程的时候,即使这个线程不做任何的工作,JVM都会分配一个堆栈空间。这个空间的大小默认为128K,您可以通过-Xss参数进行调整。当然您还可以使用ThreadPoolExecutor线程池来缓解线程的创建问题,但是又会造成BlockingQueue积压任务的持续增加,同样消耗了大量资源。

4)如果大量使用长连接的话,线程是不会关闭的,这样系统资源的消耗更容易失控

而异步IO模式 就是为了解决这样的并发性存在的。


http://www.ppmy.cn/news/63284.html

相关文章

简单实现基于UDP与TCP的回显服务器

目录 前言UDP 版的回显服务器需要用到的 api服务端客户端UDP 版本的字典客户端和字典服务器 TCP 版的回显服务器需要用到的 api服务器客户端对服务器进行改进(使用线程池)TCP 版本的字典客户端和字典服务器 前言 我们写网络程序, 主要编写的是应用层代码. 真正要发送这个数据,…

华为OD机试真题-24点运算【2023】【JAVA】

一、题目描述 计算24点是一种扑克牌益智游戏,随机抽出4张扑克牌,通过加(+),减(-),乘(*), 除(/)四种运算法则计算得到整数24,本问题中,扑克牌通过如下字符或者字符串表示,其中,小写joker表示小王,大写JOKER表示大王:3 4 5 6 7 8 9 10 J Q K A 2 joker JOKER 本程序要…

golang实现关键路径算法

关键路径算法(Critical Path Method,简称CPM)是一种用于项目管理的技术,主要用于计算项目中的关键路径和关键活动。关键路径是指项目中的最长路径,决定了项目的最短完成时间。关键活动是指在关键路径上的活动&#xff…

SRVCC流程及异常场景介绍

SRVCC(Single Radio Voice Call Continuity)用于在LTE和3G网络之间,实现VoLTE电话无缝切换到3G网络。用户正在使用VoLTE电话进行通话,当他们移出了LTE网络覆盖范围,SRVCC技术会自动将电话切换到3G网络,从而保持通话不中断。 关键流程如下 UE(用户设备)向MME(移动管理…

SpringBoot【开发实用篇】---- 热部署

SpringBoot【开发实用篇】---- 热部署 1. 手动启动热部署2. 自动启动热部署3. 参与热部署监控的文件范围配置4. 关闭热部署 什么是热部署?简单说就是你程序改了,现在要重新启动服务器,嫌麻烦?不用重启,服务器会自己悄悄…

面试官问我有没有mysql优化经验,我该怎么回答好

当面试官问到你是否有MySQL优化经验时,你可以通过以下方式回答: 确认问题:确认面试官具体指的是哪些方面的优化经验,例如查询优化、索引优化、缓存优化等等。 解释经验:如果你有MySQL优化经验,那么你可以详…

(四)【平衡小车制作】陀螺仪MPU6050

一、硬件结构 1.什么是陀螺仪? 陀螺仪是用于测量或维护方位和角速度的设备。它是一个旋转的轮子或圆盘,其中旋转轴可以不受影响的设定在任何方向。当旋转发生时,根据角动量守恒定律,该轴的方向不受支架倾斜或旋转的影响。 2.MPU…

C++数据结构:手撕红黑树

目录 一. 红黑树的概念及结构 二. 红黑树节点的定义 三. 红黑树节点的插入 3.1 初步查找插入节点的位置并插入节点 3.2 红黑树结构的调整 3.3 红黑树节点插入完整版代码 四. 红黑树的结构检查 4.1 检查是否为搜索树 4.2 检查节点颜色是否满足要求 附录:红黑…