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.同时监听:监听多个客户端的连接请求和接收数据请求的同时,还能监听自己有数据发送 。

  • 相关阅读:
    ionic 刷新页面的几种方法
    Highcharts中如何外部修改pointStart
    前端分页 思路
    快捷选时间
    获取今天,昨天,本周,上周,本月,上月时间
    angularjs 弹出框 $modal
    SQL 查找存在某内容的存储过程都有哪些
    LINQ to SQL和Entity Framework
    SQL模糊查询条件的四种匹配模式
    数据库--中文表名及字段名的优缺点
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13302457.html
Copyright © 2011-2022 走看看