zoukankan      html  css  js  c++  java
  • JAVA——IO模型分类

    一、IO模型分类
    1. 阻塞IO模型:
      a. 读写过程会出现阻塞现象
      b. 数据没有就绪,用户线程会一直处于阻塞状态,一直读不到数据,造成线程浪费
    2. 非阻塞IO模型

      a. While 去read()数据,立即返回结果,数据没有准备好就报错,继续循环read,直到数据准备好,会一直占有cpu去read
    3. 多路复用IO模型(使用比较多)
      a. 有一个线程不断去轮询多个socket状态,当socket有读写事件,才调用IO读写操作
      b. 通过一个线程管理多个socket,当socket有读写事件发生才会占用资源进行实际读写操作,并且对达到事件逐一响应
      c. 适合连接数多的情况
      d. 轮询通过内核进行,效率要比用户线程轮询高得多
      e. 事件响应体很大,会导致后续事件处理慢和新增时间轮询
    4. 信号驱动IO模型
      a. IO请求--》注册信号函数---》内核数据就绪,发送信号给用户线程--》收到信号,进行实际IO操作
    5. 异步IO模型(最理想的IO模型)
      a. 内核等待数据准备完成,然后将数据copy到线程上,发送信号告知线程,数据可以直接使用了。
      b. 与信号驱动IO操作不同的是,发送的信号是告知数据已经可以直接使用,信号驱动时告知线程开始进行IO操作。
      c. 注意:需要操作系统底层支持

  • 相关阅读:
    数据库优化空间换时间优化
    sql server性能分析查询死锁和阻塞的sql语句
    修改储存过程所有者
    SQL Server 查看数据库基本信息
    SQL语句之普通行列转换
    Ext.Window
    小议操作符“^”与"&"的应用
    数据库设计名值模式(转)
    为数据库建立索引
    sql server性能分析检测数据库阻塞语句
  • 原文地址:https://www.cnblogs.com/big-data-hins/p/13377492.html
Copyright © 2011-2022 走看看