Java IO系列之三:NIO VS IO

 NIO VS IO

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

IO: 面向流;    阻塞的;     無異步

JAVA IO

  Java IO: Reading data from a blocking stream.spa

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.server

 

Java NIO: A single thread managing multiple connections.blog

 Java NIO.2的主要表現爲增長了Files、Path、Paths等功能類和基於異步Channel的IO事件

 

使用場景

NIO的優點:
  1.優點在於一個線程管理多個通道;可是數據的處理將會變得複雜;
  2.若是須要管理同時打開的成千上萬個鏈接,這些鏈接每次只是發送少許的數據,採用這種;
傳統IO的優點:
  1.適用於一個線程管理一個通道(鏈接)的狀況;由於其中的流數據的讀取是阻塞的;
  2.若是須要管理同時打開不太多的鏈接,這些鏈接會發送大量的數據;ip

區別

  NIO vs IO之間的理念上面的區別(NIO將阻塞交給了後臺線程執行)get

  NIO同步

    1. 面向Channel和buffer
    2. selector:由一個專門的線程來處理全部的IO事件,並負責分發。
    3. 事件驅動機制:事件到的時候觸發,而不是同步的去監視事件。
    4. 線程通信:線程之間經過wait,notify等方式通信。保證每次上下文切換都是有意義的。減小無謂的線程切換。

參考網址

  1. Java NIO與IO的區別和比較
相關文章
相關標籤/搜索