Socket 编程之 NIO

本文介绍基于 NIO 实现 Socket 编程的方法及问题。


目录

  • NIO 简介
  • NIO Socket 代码示例
  • 问题分析
  • 总结
  • 推荐参考

NIO 简介

NIO,全称 Non Blocking I/O,是 JDK 1.4 引入的非阻塞 I/O 模型。
NIO 引入以下几个概念:

  • Channel:通道,类似 BIO 中的流,区别在于传统 I/O 流是单向的,Channel 是双向的,基于 NIO 的数据交换都在 Channel 中产生。
  • Buffer:缓冲区,用于 Channel 与类间交换数据,Channel 向 Buffer 中写入数据供类读取,也可以从 Buffer 中读取类写入的数据。
  • Selector:选择器,基于多路复用的 I/O 模型,允许将多个 Channel 注册到一个 Selector 线程上处理。

注意:所有系统的 I/O 都分为两个阶段:等待就绪操作。举例说明,读过程分为 等待系统可读执行读,写过程分为 等待网卡可写执行写

NIO 的重要特点:Socket 的主要读、写、注册和接收函数,在等待阶段都是非阻塞的,真正的 I/O 操作(执行读和执行写)是同步阻塞的,虽然消耗 CPU 但是性能非常好。


NIO Socket 代码示例


问题分析


总结


推荐参考

  • Netty 系列之 Netty 高性能之道

你可能感兴趣的:(Socket 编程之 NIO)