在Java中提供了,一下关于 I\O
的API,可以帮助我们读写外部的文件和数据,即 Java IO。
主要的分类有如下三种:
BIO(Blocking I/O):同步阻塞IO -- 传统、模式简单、使用方便,但并发处理能力弱,通信耗时,依赖网速。
NIO(New I/O):同步不阻塞IO -- 针对网络传输效能优化的新功能、与原来的 I/O 有同样的作用和目的, 他们、之间重要的区别是数据打包和传输的方式。原来的 I/O 以流的方式处理数据,而 NIO 以块的方式处理数据。
面向流的 I/O 系统一次一个字节地处理数据。一个输入流产生一个字节的数据,一个输出流消费一个字节的数据。
面向块的 I/O 系统以块的形式处理数据。每一个操作都在一步中产生或者消费一个数据块。按块处理数据比按(流式的)字节处理数据要快得多。但是面向块的 I/O - 缺少一些面向流的 I/O 所具有的优雅性和简单性。
AIO(Asynchronous I/O):异步不阻塞IO -- 在NIO的基础上引入了新的异步通道的概念,并提供了异步文件通道和异步套接字通道的实现。
想更深层次了解的话,可直接看示例代码进行进一步学习。
参考地址:netty案例,netty4.1基础入门篇零《初入JavaIO之门BIO、NIO、AIO实战练习》 | bugstack 虫洞栈
这里我就不给出代码了,直接给出大佬画图的总结了。