zoukankan      html  css  js  c++  java
  • BIO、NIO与NIO.2的区别与联系

    BIO、NIO、NIO.2之间的区别主要是通过同步/异步、阻塞/非阻塞来进行区分的

    同步:

      程序与操作系统进行交互的时候采取的是问答的形式

    异步:

      程序与操作系统取得连接后,操作系统会主动通知程序消息

    阻塞:

      程序在执行一个操作的时候,在执行完毕前会一直等待

    非阻塞:

      程序在执行的时候,不会停止

    举例:

      对于Socket监听程序而言

    BIO:同步阻塞

      JDK1.4之前

      不停地监听是否有新的连接,如果有新的连接,就使用流进行读写操作,在读写过程中程序是不能做其他事情的

      对机器的性能要求较高

      并发局限于应用

    NIO:同步非阻塞

      JDK1.4开始提供

      不停地监听是否有新的连接,通过判断Socket是否为null来决定是否进行操作,只有Socket为null,才说明服务器收到了请求,但是这并不影响程序继续往下执行,如果程序想要在收到null的时候做其他事情,就可以继续往下执行。

      适用于连接数目多,且连接操作时间较短的情况。如:聊天服务器。

      并发局限于应用

    NIO.2:异步非阻塞

      JDK1.7开始提供

      将事件与执行动作进行“绑定”,一旦产生了连接、读取等事件,系统会通知程序,程序收到通知后执行相关的操作

      适用于连接数目多,且连接操作时间较长的情况。

      并发过程中充分调用了OS

  • 相关阅读:
    类继承
    抽象基类 纯虚函数
    虚函数
    Java网络通信
    Java补补补
    刷LeetCode吧
    贝叶斯网络的
    vscode添加vue模板
    vue--项目实例
    Java01
  • 原文地址:https://www.cnblogs.com/sherrykid/p/6013995.html
Copyright © 2011-2022 走看看