Java NIO 与 Selector

本篇总结一下 Java NIO相关的知识点与源码 Java NIO 属于比较基础的 Java 知识点, 但是出于一些不可名状的原因, Java NIO 成了长期没有关注的盲点. 由于与 netty 息息相关, 在不远的未来将会用到, 所以在这里特意总结一下. Channels 与 Buffers 在 Java 标准的输入输出控制时, 我们往往控制的是字节流或者字符流. 由于要满足 NIO (Non-block IO) 的需求, 所以我们需要使用 channels 和 buffers. channel 和流提供的功能相类似, 但是区别在于: i. channel 既可以用于读也可以用于写, 但是流一般只用于读或者写. ii. channel 可以异步的读写, 这是 NIO 最大的要求 iii. channel 总是往 Buffer 中读, 或者从 Buffer 中写. channel … Continue reading “Java NIO 与 Selector”