IO编程与NIO编程的区别_就像吃火锅_如果需要来回倒数据你需要先把它存到一个碗缓冲区里
IO编程与NIO编程的区别
一、面向流与面向缓冲
Java IO和NIO最大的不同点在于它们的数据处理方式。Java IO是面向流的,意思就是每次读取数据就像喝汤一样,一口一口地喝,直到喝完。这些数据不会像喝汤一样被存起来,而且你不能像喝汤那样来回倒。如果需要来回倒数据,你需要先把它存到一个碗(缓冲区)里。 Java NIO则是面向缓冲区的。就像吃火锅,你先把食物放在盘子里,然后再从盘子里夹到锅里。这样你就可以在盘子里面来回操作食物,更灵活。不过,你需要注意盘子里的食物数量,别吃完了又倒回锅里。二、阻塞与非阻塞IO
Java IO的流都是阻塞的,这意味着当你调用read()或write()时,就像你在等公交车一样,你只能等到公交车来了才能上车。在这个过程中,你不能做其他事情。 Java NIO则是非阻塞的。就像你等公交车,但你发现公交车还没来,你就可以去旁边喝杯咖啡,或者看看手机。这样,当你需要时,你才能处理数据。三、选择器(Selectors)
Java NIO的选择器就像一个聪明的管家,可以同时照顾多个“孩子”(通道)。你可以把多个通道注册到选择器上,然后让一个线程来管理它们。这个线程会检查哪些“孩子”已经准备好了,可以处理输入或写入。Java的主要特性
Java的主要特性包括:
- 跨平台性:Java程序可以在任何支持JVM的操作系统上运行。
- 面向对象:Java完全基于对象和类的概念。
- 安全性:Java设计了许多特性来确保代码在运行时的安全性。
- 强类型语言:Java是一种强类型语言,意味着你需要明确变量的数据类型。
- 内存管理:Java虚拟机提供自动内存管理和垃圾收集。
Java用途广泛,可以用于开发桌面应用程序,网页应用程序,移动应用程序(尤其是Android应用),嵌入式系统,云计算等等。
信息对比
特性 | Java IO | Java NIO |
---|---|---|
面向流 | 是 | 否 |
面向缓冲 | 否 | 是 |
阻塞IO | 是 | 否 |
非阻塞IO | 否 | 是 |
选择器 | 否 | 是 |