第11讲 | Java提供了哪些IO方式? NIO如何实现多路复用?

Java中有很多IO方式,常见的分类就是
1.传统阻塞IO--BIO(blocking IO),
2.非阻塞IO--NIO(Non-Blocking IO) ,
3.异步非阻塞IO--A IO(Asynchronous Non-blocking IO)

1.BIO

传统的IO就是我们在学习Java最先遇到的File操作类,比如InputStream/OutputStream,Reader/Writer,很多人也把socket网络通信的类当做BIO,因为网络通信类实际上也是操作网络的IO.

    Stream类流式主要用于操作二进制文件,主要有InputStream/OutputStream,FileInputStream/FileOutputStream,GzipOutputStream...

    Writer/Reader 主要用于操作文本类操作,比如我们常见的properties操作,常见的FileReader/FileWriter...

    Buffer类,带缓冲类的实现可以避免频繁的IO磁盘读写,比如BufferdWriter/BufferdReader,BufferedOutputStream/BufferedInputStream

注:1.使用缓冲区类一定要加flush
2.使用BIO需要显式关闭,下图很多IO都实现了closeable.因为资源需要释放.使用try-finally进行关闭,最后也可以使用finallize或cleaner来保证资源最终会释放

IO继承关系

2.NIO

NIO的主要组成
NIO主要是三大块组成 Buffer,Chanel,Selector

Buffer
高效的数据容器,除了布尔类型,每个基本数据类型都有相应的Buffer实现
Chanel
Channel通道,可以看做是连接,用户
selector
多路复用的基础,多个Chanel会注册到selector上面,有selector去检查哪些chennel已经是就绪状态,从而使得单线程可以对多个channel进行管理

你可能感兴趣的:(第11讲 | Java提供了哪些IO方式? NIO如何实现多路复用?)