zoukankan      html  css  js  c++  java
  • BIO 和NIO、AIO的区别

    一、基本概念

    BIO:   Block input output 同步阻塞io:

    服务器实现模式为一个连接建立一个线程,即客户端有连接请求时,服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情,会造成不必要的线程开销,可以通过线程池机制改善

    NIO :non-blocking input output 同步非阻塞io:

    服务器实现模式为一个请求一个线程,即客户端发送的连接请求都会注册到多路复用器(Selector)上,多路复用器论询到连接有IO请求时才启动一个线程进行处理

    AIO:Asynchronous input output  异步非阻塞io:

    二、BIO 和NIO两者的区别

    首先NIO 非阻塞,当selecter 检测到有请求时采取调用线程去读取数据,而BIO的则是一直阻塞在哪里等待请求,其次NIO 节省线程,用过的线程如果执行完任务可以被调度去执行其他任务,一个线程处理多条任务,提升线程使用率。也降低了线程资源的浪费。

    三、NIO和AIO的区别

    异步与同步的区别,AIO的读写操作都是异步操作,读写的过程还可以干其他事,当读写完毕后会按照回调函数的方式通知业务函数继续下一步操作。所以AIO 适合于连接数目多且连接比较长的场景,读写耗时的场景。而NIO则适合连接数目多且连接比较短的操作。

  • 相关阅读:
    Java + Element-UI 实现简单的树形菜单
    Spring Boot 日志
    SpringMVC入门
    vue 路由钩子函数 刷新当前路由
    使用vue 路由钩子函数 报错 Uncaught (in promise) undefined
    Webpac优化看文记录
    移动端长按复制记录
    Vue.js 运行机制全局概览浅读
    老异步问题了
    vue-lazyload的使用 图片懒加载
  • 原文地址:https://www.cnblogs.com/lufei33180/p/13946137.html
Copyright © 2011-2022 走看看