传统BIO模型
传统BIO是一种同步的阻塞IO,IO在进行读写时,该线程将被阻塞,线程无法进行其它操作。IO流在读取时,会阻塞。直到发生以下情况:
1、有数据可以读取。
2、数据读取完成。
3、发生异常
伪异步IO模型
以传统BIO模型为基础,通过线程池的方式维护所有的IO线程,实现相对高效的线程开销及管理。
NIO模型
NIO(JDK1.4)模型是一种同步非阻塞IO,主要有三大核心部分:Channel(通道),Buffer(缓冲区), Selector(多路复用器)。
NIO优点:
通过Channel注册到Selector上的状态来实现一种客户端与服务端的通信。
Channel中数据的读取是通过Buffer , 一种非阻塞的读取方式。
Selector 多路复用器 单线程模型, 线程的资源开销相对比较小。
NIO和IO的主要区别
下表总结了Java IO和NIO之间的主要区别:
IO |
NIO |