跳至主要內容
详解Java NIO的Buffer缓冲区和Channel通道

12.3 Buffer和Channel

首先我们再来回顾一下 IO 和 NIO 的区别

  • 可简单认为:IO 是面向流的处理,NIO 是面向块(缓冲区)的处理
  • 面向流的 I/O 系统一次一个字节地处理数据
  • 一个面向块(缓冲区)的 I/O 系统以块的形式处理数据

沉默王二大约 16 分钟Java核心Java NIO
Java NIO 比传统 IO 强在哪里?

12.1 NIO比IO强在哪?

我花了几天时间去了解NIO 的核心知识,期间看了《Java 编程思想》和《疯狂 Java 讲义》中的 NIO 模块。但是,看完之后还是很,不知道 NIO 是干嘛用的,网上的资料和书上的知识点没有很好地对应上。

我这里先给大家展示一副传统 IO 和 NIO 的对比图,感受一下。


沉默王二大约 11 分钟Java核心Java NIO
一文彻底理解Java IO模型(阻塞IO非阻塞IO/IO多路复用)

12.6 Java IO模型

Java 的 IO 分为两大类,一类是传统的 IO(Blocking IO),一类是 NIO (New IO)。

传统的 IO 基于字节流和字符流,以阻塞式 IO 操作为主。常用的类有 FileInputStream、FileOutputStream、InputStreamReader、OutputStreamWriter 等。这些类在读写数据时,会导致执行线程阻塞,直到操作完成。


沉默王二大约 12 分钟Java核心Java NIO
一文彻底解释清楚Java 中的NIO、BIO和AIO

12.2 BIO、NIO 和 AIO 的区别

上篇,我们了解了 NIO 和传统 IO 的区别,那这篇我们来了解 BIO、NIO 和 AIO 的区别,新手也很容易混淆,我们换一个方式来讲,讲给女朋友听👂。

周末午后,在家里面进行电话面试,我问了面试者几个关于 IO 的问题,其中包括什么是 BIO、NIO 和 AIO?三者有什么区别?具体如何使用等问题,但是面试者回答的并不是很满意。于是我在面试评价中写道:"对 Java 的 IO 提醒理解不够深入"。恰好被女朋友看到了。


沉默王二大约 9 分钟Java核心Java NIO