1.相关概念
- 同步:使用同步时,Java自己处理IO读写。
- 异步:使用异步时,Java将IO读写委托给OS处理,需要将数据缓冲区地址和大小传给OS,完成后OS通知Java处理(回调)。
- 阻塞:使用阻塞IO时,Java调用会一直阻塞到读写完成才返回。
- 非阻塞:使用非阻塞IO时,如果不能立马读写,Java调用会马上返回,当IO事件分发器通知可读写时在进行读写,不断循环直到读写完成。
2.基本概念
- IO:阻塞IO。
- BIO:同步阻塞IO。服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器需要启动一个线程进行处理,如果这个链接不做任何事情会造成不必要的线程开销,当然可以通过线程池机制改善。
- NIO:同步非阻塞IO。服务器实现模式为一个请求一个线程,即客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询到连接有IO请求时才启动一个线程进行处理。用户进程也需要时不时的询问IO操作是否就绪,这需要用户进行不停的去询问。NIO的包括三个核心概念:缓冲区(Buffer)、通道(Channel)、选择器(Selector)。
- AIO:异步非阻塞IO。最大的特性时具有异步能力,这种能力对socket与文件I/O都起作用。AIO其实是一种在读写操作结束之前允许进行其他操作的I/O处理。
3.应用场景
- 并发连接数不多时采用BIO,因为它编程和调试都非常简单,
- 如果涉及到高并发的情况,应选择NIO或AIO。
参考:https://blog.youkuaiyun.com/qq_28323595/article/details/88909278
本文深入解析了Java中四种主要的IO模型:BIO(同步阻塞IO)、NIO(同步非阻塞IO)、AIO(异步非阻塞IO)。详细阐述了它们的工作原理、应用场景及优缺点,帮助读者理解在不同场景下如何选择合适的IO模型。
2506

被折叠的 条评论
为什么被折叠?



