-
常见的IO操作应用模型
- 同步阻塞IO(Blocking IO) : 系统内核拷贝数据期间用户线程被阻塞
- 同步非阻塞(Non-Blocking IO) : 系统内核拷贝数据期间用户线程轮询, 造成CPU资源浪费
- IO多路复用(IO Multiplexing) : 减少CPU在用户线程间的切换时间
- 异步IO(Asynchronous IO) : 需要操作系统支持, 目前还不够完善
-
JDK NIO中核心API对象有哪些?
- 缓冲区对象: Buffer
- 通道对象: Channel
- 选择器对象: Selector
-
NIO框架的基本应用
- Tomcat中NIO的应用
- Netty中NIO的应用等
-
NIO给我们带来了哪些特性应用?
- 事件驱动, 单线程多任务
- 非阻塞I/O (I/O读写不再阻塞, 而是返回0)
- 基于block的传输, 通常比基于流的传输更高效
- IO多路复用大大提高了Java网络应用的可伸缩性和实用性
-
NIO还存在哪些问题?
- 使用NIO != 高性能, 当连接数<1000, 并发程度不高或者局域网环境下NIO并没有显著的性能优势
- NIO并没有完全屏蔽平台差异, 它仍然是基于各个操作系统的I/O系统实现的, 差异仍然存在. 使用NIO做网络编程构建事件驱动模型并不容易, 陷阱重重
- 推荐大家使用成熟的NIO框架, 如Netty, MINA等. 解决了很多NIO的陷阱, 并屏蔽了操作系统的差异, 有较好的性能和编程模型
Nio应用总结分析
最新推荐文章于 2023-10-19 10:15:45 发布