码迷,mamicode.com
首页 > 其他好文 > 详细

NIO VS IO

时间:2020-06-08 19:09:14      阅读:59      评论:0      收藏:0      [点我收藏+]

标签:多个   design   rom   后台   阻塞   场景   mic   tle   files   

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的区别和比较

NIO VS IO

标签:多个   design   rom   后台   阻塞   场景   mic   tle   files   

原文地址:https://www.cnblogs.com/muzhongjiang/p/13067562.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!