I/O模型
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 |
