I/O模型

1. BIO

  • BIO(Blocking I/O):同步阻塞IO模型,读取或写入数据时,线程将一直等待,直到数据准备就绪或者写入操作完成。适合处理并发连接数较少的场景。

2. NIO

  • NIO(Non-blocking I/O):非阻塞IO模型,线程执行IO操作时不会等待,而是继续执行其他任务,通过轮询(polling)或者使用回调函数等机制来检查IO操作是否完成。适合处理大量并发连接的场景。

3. AIO

  • AIO(Asynchronous I/O):异步IO模型,线程发起IO操作后,可以继续执行其他任务,当IO操作完成时,通过回调或Future机制通知应用程序。适合高性能、高并发的场景。

4. 区别

特性 BIO NIO AIO
模型 阻塞式 非阻塞式 异步非阻塞式
线程使用 每个连接一个线程 单线程或少量线程处理多个连接 线程无需等待IO完成
复杂度 简单 中等 较高
性能 适合低并发 适合中高并发 适合极高并发和低延迟
API支持 java.io包 java.nio包 java.nio.channels.AsynchronousChannel