zoukankan      html  css  js  c++  java
  • NIO和BIO

    BIO

    同步阻塞式IO,服务器实现模式:为一个连接建立一个线程,即客户端有连接请求时,服务器端就需要启动一个线程进行处理,这个线程和这个连接就捆绑到了一起,线程就等着连接做事情;如果这个连接不做任何事情,会造成不必要的线程开销,当然可以通过线程池机制改善。

    在这里插入图片描述

    NIO

    同步非阻塞式IO,服务器实现模式:为一个请求建立一个线程,即客户端发送的连接都会注册到多路复用器(Selector)上,并基于事件驱动模式,即当多路复用器论询到连接中有事件发生时,才启动一个线程进行处理;事件包括连接请求事件、读取数据事件、发送数据事件等。

    在这里插入图片描述

    同步非阻塞式IO关键采用了事件驱动的思想来实现一个多路转换器

    NIO BIO区别
    NIO和BIO最大的区别就是只需要开启一个线程就可以处理来自多个客户端的IO事件。

    NIO原理
    1.建立连接:若服务端监听到客户端的连接请求,便为其建立通信套接字(java中就是通道(Channel),然后返回继续监听,若同时有多个客户端连接请求到来也可以全部接收,依次为它们建立通信套接字
    2.处理数据:若服务端监听到来自已经创建了通信套接字的客户端发来的数据,就会调用对应的接口处理接收到的数据,若同时有多个客户端发来数据也可以依次进行处理
    3.同时监听:监听多个客户端的连接请求和接收数据请求的同时,还能监听自己有数据发送 。

  • 相关阅读:
    OAuth2.0标准类库汇总
    RabbitMQ:Docker环境下搭建rabbitmq集群
    WCF&AppFabric :异常消息: 内存入口检查失败
    前端框架Vue、Angular、React
    串口驱动开发
    组合而不是继承,单一职责
    项目管理的一个月
    软件架构的一个设想以及谈一下过去两年开发软件的过失
    TCP中需要了解的东西
    C++编程新思维中的技巧
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13302457.html
Copyright © 2011-2022 走看看