IO编程与NIO编程的区别_就像吃火锅_如果需要来回倒数据你需要先把它存到一个碗缓冲区里

IO编程与NIO编程的区别

一、面向流与面向缓冲

Java IO和NIO最大的不同点在于它们的数据处理方式。Java IO是面向流的,意思就是每次读取数据就像喝汤一样,一口一口地喝,直到喝完。这些数据不会像喝汤一样被存起来,而且你不能像喝汤那样来回倒。如果需要来回倒数据,你需要先把它存到一个碗(缓冲区)里。 Java NIO则是面向缓冲区的。就像吃火锅,你先把食物放在盘子里,然后再从盘子里夹到锅里。这样你就可以在盘子里面来回操作食物,更灵活。不过,你需要注意盘子里的食物数量,别吃完了又倒回锅里。

二、阻塞与非阻塞IO

Java IO的流都是阻塞的,这意味着当你调用read()或write()时,就像你在等公交车一样,你只能等到公交车来了才能上车。在这个过程中,你不能做其他事情。 Java NIO则是非阻塞的。就像你等公交车,但你发现公交车还没来,你就可以去旁边喝杯咖啡,或者看看手机。这样,当你需要时,你才能处理数据。

三、选择器(Selectors)

Java NIO的选择器就像一个聪明的管家,可以同时照顾多个“孩子”(通道)。你可以把多个通道注册到选择器上,然后让一个线程来管理它们。这个线程会检查哪些“孩子”已经准备好了,可以处理输入或写入。

Java的主要特性

Java的主要特性包括:

Java用途广泛,可以用于开发桌面应用程序,网页应用程序,移动应用程序(尤其是Android应用),嵌入式系统,云计算等等。

信息对比

特性 Java IO Java NIO
面向流
面向缓冲
阻塞IO
非阻塞IO
选择器