• NIO和BIO


    BIO

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

    在这里插入图片描述

    NIO

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

    在这里插入图片描述

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

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

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

  • 相关阅读:
    ingress高可用--使用DaemonSet方式部署ingress-nginx
    flask-Migrate模块
    flask 框架 前端和后端请求超时问题
    linux crontab执行python脚本问题
    python 装饰器
    Python 中实现装饰器时使用 @functools.wraps 的理由
    jquery ui dialog 中使用select2 导致select2的input失去焦点的解决方法
    Django之ModelForm组件
    Django之Model操作
    Java环境变量,真的还有必要配吗?
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13302457.html
Copyright © 2020-2023  润新知