java 中 IO 流分为几种,BIO、NIO、AIO 有什么区别
时间: 2023-03-20 21:02:37 浏览: 222
Java 中IO流分为哪几种? BIO、NIO、AIO有什么区别?
Java中的IO流分为三种类型:BIO、NIO、AIO。
BIO是阻塞式IO,也就是说在读取或者写入数据时,线程会一直阻塞直到读取或写入完成。因为线程被阻塞,所以不能处理其它请求,会导致服务器性能下降。
NIO是非阻塞式IO,它的核心是使用了选择器(Selector)和通道(Channel)来实现非阻塞读写。Selector会不断地轮询注册在其上的Channel,如果某个Channel上面发生读或者写事件,这个Channel就处于就绪状态,会被Selector轮询出来,然后通过SelectionKey可以获取就绪Channel的集合,进行后续的IO操作。
AIO是异步IO,也叫做NIO.2。在AIO模式下,当进行IO操作时,不需要通过轮询的方式等待IO操作完成,而是直接返回。当IO操作完成后,系统会回调事先传入的CompletionHandler接口,在回调中进行后续的处理。
综上所述,BIO模式适合连接数目比较小且固定的架构,NIO模式适合连接数目多且连接比较短(轻操作)的架构,而AIO模式则适合连接数目多且连接比较长(重操作)的架构。
阅读全文