• Java IO系列之三:NIO VS IO


     NIO VS IO

    NIO: 面向缓存; 非阻塞的; selector

    IO: 面向流;    阻塞的;     无

    JAVA IO

      Java IO: Reading data from a blocking stream.

    Java IO: A classic IO server design - one connection handled by one thread.

    JAVA NIO

    Java NIO: Reading data from a channel until all needed data is in buffer.

     

    Java NIO: A single thread managing multiple connections.

     Java NIO.2的主要表现为增加了Files、Path、Paths等功能类和基于异步Channel的IO

    使用场景

    NIO的优势:
      1.优势在于一个线程管理多个通道;但是数据的处理将会变得复杂;
      2.如果需要管理同时打开的成千上万个连接,这些连接每次只是发送少量的数据,采用这种;
    传统IO的优势:
      1.适用于一个线程管理一个通道(连接)的情况;因为其中的流数据的读取是阻塞的;
      2.如果需要管理同时打开不太多的连接,这些连接会发送大量的数据;

    区别

      NIO vs IO之间的理念上面的区别(NIO将阻塞交给了后台线程执行)

      NIO

      1. 面向Channel和buffer
      2. selector:由一个专门的线程来处理所有的IO事件,并负责分发。
      3. 事件驱动机制:事件到的时候触发,而不是同步的去监视事件。
      4. 线程通讯:线程之间通过wait,notify等方式通讯。保证每次上下文切换都是有意义的。减少无谓的线程切换。

    参考网址

    1. Java NIO与IO的区别和比较
  • 相关阅读:
    SQL WHERE 子句:语法及案例剖析
    SQL SELECT DISTINCT 语句:语法及案例剖析
    SQL SELECT 语句:语法与案例剖析
    SQL 语法:一些最重要的 SQL 命令简介
    SQL 简介:什么是SQL,SQL能做什么
    mybatis 注解开发
    mybatis 缓存
    mybatis 延迟加载策略
    mybatis的多表查询
    mybatis 的动态 SQL 语句
  • 原文地址:https://www.cnblogs.com/haimishasha/p/10756068.html
Copyright © 2020-2023  润新知