【Java面试笔记:基础】11.Java提供了哪些IO方式? NIO如何实现多路复用?

在Java中,I/O操作是网络编程和文件处理的核心,其发展经历了从传统的BIO(Blocking I/O)NIO(Non-blocking I/O),再到**AIO(Asynchronous I/O)**的演进。

1. Java 提供的 IO 方式

  • 传统同步阻塞 IO(BIO)
    • 特点:基于流模型实现,代码简单直观,但扩展性和性能存在局限性。
    • 应用场景:适合连接数较少的场景,如简单的文件操作或少量客户端的网络通信。
    • 缺点:线程数随连接数线性增长,资源消耗大,无法支撑高并发。
    • 示例InputStreamOutputStreamReaderWriterSocketServerSocket
// 服务端代码(单线程阻塞)
ServerSocket serverSocket = new ServerSocket(8080);
while (true) {
   
    Socket socket = serverSocket.accept(); // 阻塞等待连接
    new Thread(() -> {
   
        // 处理请求(读写操作也会阻塞)
    }).start();
}
  • NIO(New IO)
    • 特点:引入了 ChannelSelectorBuffer 等新的抽象,支持多路复用的同步非阻塞 IO
    • 应用场景:适合高并发场景,如服务器端

你可能感兴趣的:(Java,核心技术面试精讲笔记,java,面试,笔记,NIO,AIO,BIO,I/O)