最近在整理 Java NIO 相关的资料,发现了 Jakob Jenkov 2014年写的 Java NIO Tutorial 教程,概念讲的非常透彻、浅显易懂,值得作为 Java NIO 学习的推荐材料。

阅读文章的过程中如果有任何疑问,欢迎添加笔者为好友,拉您进【七日书摘】微信交流群,一起交流技术,一起打造高质量的职场技术交流圈子,抱团取暖,共同进步。
七日书摘官方群.jpg

本系列会尽量保持和原英文版本一致的章节,因此会以小章节的方式发布该系列文章:

英文原文链接:http://tutorials.jenkov.com/java-nio/index.html

Java NIO 简介

Java NIO(New IO) 是 Java 1.4 版本引入的用于替换标准的 Java IO 和 Java Networking API 的新的 API 接口,Java NIO 提供了一套与标准 IO API 完全不同的操作方式。

注意:Java NIO 可以理解为 新 IO(NEW I/O) 或者 非阻塞IO(Non-blocking I/O),其实是同一个概念。

Java NIO: Channels and Buffers

标准 IO API 是面向字节流与字符流的,而 NIO 是面向管道和缓存区的,数据总是从管道中读取到缓冲区 (buffer) 中,或者从缓冲区 (buffer) 中写回到管道中。

Java NIO: Non-blocking IO

Java NIO 开启非阻塞 IO 操作模式。例如:当一个线程从管道读取数据到缓冲区 (buffer) 中时,可以同时去做其他事情,一旦数据写入缓冲区 (buffer),线程可以继续处理后续的操作,对于从缓冲区(buffer)写入数据到管道中也是一样的。

Java NIO: Selectors

Java NIO 中有一个 selectors 的概念,具体来说 selectors 就是一个可以监控或操作多个管道事件状态的对象(比如:打开链接,接受数据等),这样单线程可以做到监控或操作多个管道的数据。

Java NIO 简明教程系列目录

  1. Java NIO 简明教程 之 Java NIO 概述
  2. Java NIO 简明教程 之 Java NIO 通道(Channel)
  3. Java NIO 简明教程 之 Java NIO 缓冲(Buffer)
  4. Java NIO 简明教程 之 Java NIO Scatter/Gather
  5. Java NIO 简明教程 之 Java NIO 通道之间的数据传输(Channel to Channel Transfers)")
  6. Java NIO 简明教程 之 Java NIO 选择器(Selector)")
  7. Java NIO 简明教程 之 Java NIO 文件通道(FileChannel)
  8. Java NIO 简明教程 之 Java NIO 套接字通道(SocketChannel)
  9. Java NIO 简明教程 之 Java NIO 服务端套接字通道(ServerSocketChannel)
  10. Java NIO 简明教程 之 Java NIO 非阻塞式服务器(Non-blocking Server)
  11. Java NIO 简明教程 之 Java NIO 数据报通道(DatagramChannel)
  12. Java NIO 简明教程 之 Java NIO 管道(Pipe)
  13. Java NIO 简明教程 之 Java NIO vs. IO
  14. Java NIO 简明教程 之 路径(Path)
  15. Java NIO 简明教程 之 Java NIO 文件(Files)
  16. Java NIO 简明教程 之 Java NIO 异步文件通道(AsynchronousFileChannel)

------完------

推荐阅读:

Java基础知识面试题篇(2020年2月最新版)")

Spring MVC面试题集(2020年2月最新版)

Spring 面试题集(2020年2月最新版)

更多学习讨论欢迎进入七日书摘官方群: 七日书摘官方群

七日书摘官方群群聊二维码.png

参考资源:
https://blog.csdn.net/u013857458/article/details/82424104
https://blog.csdn.net/weixin_34066347/article/details/88022884
http://wiki.jikexueyuan.com/project/java-nio-zh/