`

NIO IO区别

 
阅读更多

 

 转载一篇

我的新书《代码之谜》会有专门的章节讲解相关知识,现在写个简短的科普文:

 

就速度来说 CPU > 内存 > 硬盘

 

  • I- 就是从硬盘到内存
  • O- 就是从内存到硬盘

第一种方式:我从硬盘读取数据,然后程序一直等,数据读完后,继续操作。这种方式是最简单的,叫阻塞IO

 

第二种方式:我从硬盘读取数据,然后程序继续向下执行,等数据读取完后,通知当前程序(对硬件来说叫中断,对程序来说叫回调),然后此程序可以立即处理数据,也可以执行完当前操作在读取数据。

 

在以前的 Java IO 中,都是阻塞式 IO,NIO 引入了非阻塞式 IO。

 

还有一种就是同步 IO 和异步 IO。经常说的一个术语就是“异步非阻塞”,好象异步和非阻塞是同一回事,这大概是一个误区吧。

 

至于 Java NIO 的 Selector,在旧的 Java IO 系统中,是基于 Stream 的,即“流”,流式 IO。

 

当程序从硬盘往内存读取数据的时候,操作系统使用了 2 个“小伎俩”来提高性能,那就是预读,如果我读取了第一扇区的第三磁道的内容,那么你很有可能也会使用第二磁道和第四磁道的内容,所以操作系统会把附近磁道的内容提前读取出来,放在内存中,缓存

 

(PS:以上过程简化了)

 

通过上面可以看到,操作系统是按块 Block从硬盘拿数据,就如同一个大脸盆,一下子就放入了一盆水。但是,当 Java 使用的时候,旧的 IO 确实基于 流 Stream的,也就是虽然操作系统给我了一脸盆水,但是我得用吸管慢慢喝。

 

于是,NIO 横空出世。

分享到:
评论

相关推荐

    Java_NIO与IO的区别和比较.doc

    相比于传统的IO(Input/Output)模型,NIO引入了非阻塞I/O、字符转换、缓冲和通道等新特性,极大地提高了Java程序在处理I/O操作时的性能。 1. **Buffer**:在传统的IO操作中,数据通常直接在流之间传输,这可能导致...

    IO和NIO区别

    IO和NIO区别 Java 中的 IO 和 NIO 是两个不同的输入/输出机制,它们之间有许多区别。下面我们将详细讲解 IO 和 NIO 的区别。 1. 数据处理方式 标准 IO 以流的方式处理数据,也就是说数据是以流的形式传输的,而 ...

    NIO与传统IO代码区别实例

    总的来说,理解IO与NIO的区别,以及它们在不同场景下的优缺点,对于提升Java服务器开发的性能和效率至关重要。NIO尤其适用于需要处理大量并发连接的网络服务,如聊天服务器、游戏服务器等。希望这个简要的介绍能帮助...

    Ioserver java Nio socket 框架

    Ioserver java Nio socket 框架 是个不错的NIO 通讯框架,本来想学习mina框架,看了看mina的源码太头痛,本人觉得看懂了Ioserver 再看mina的框架,想多的学习 java NIO 的也可以下载 看看,很值得学习啊!!!

    java io 与java nio区别

    ### Java IO 与 Java NIO 的区别 在深入探讨Java IO与Java NIO之间的区别之前,我们先简单回顾一下这两种I/O模型的基本概念。 #### 1. Java IO(Blocking IO) Java IO,也称为传统的阻塞式IO或同步阻塞式IO,是...

    java nio与io性能测试

    Java NIO(New IO)是Java 1.4引入的一个新模块,它是对传统IO(Input/Output)的扩展,提供了更高效的数据传输方式。在Java IO中,数据的读写是通过流进行的,而NIO则引入了通道(Channel)和缓冲区(Buffer)的...

    Java IO_NIO

    **NIO与IO的区别** 1. 阻塞与非阻塞:Java IO是阻塞的,而NIO是非阻塞的,可以在没有数据可读时不做等待,而是继续处理其他任务。 2. 多路复用:NIO的选择器允许单线程管理多个通道,而传统的IO需要为每个连接创建一...

    Java NIO与IO的区别和比较.pdf

    ### Java NIO与IO的区别和比较 #### 引言 随着网络技术的飞速发展,企业和个人对网络应用程序的性能要求日益提高。特别是在高并发环境下,服务器需要处理来自数百乃至数千个客户端的同时连接请求,这使得传统的...

    Java NIO与IO性能对比分析.pdf

    Java NIO(New IO,也称为Non-blocking IO)和传统的Java IO是Java编程语言中用于处理I/O操作的两种主要技术。随着互联网用户数量的激增,企业对应用程序的并发处理能力提出了更高的要求。为了解决传统Java IO模型在...

    Java IO NIO and NIO 2 无水印pdf

    Java IO NIO and NIO 2 英文无水印pdf pdf所有页面使用FoxitReader和PDF-XChangeViewer测试都可以打开 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn...

    自己封装的IO核NIO

    在IT行业中,输入/输出(IO)和网络IO(NIO)是编程中不可或缺的部分,尤其是在处理大量数据传输和网络通信时。Java平台提供了丰富的IO和NIO API,但它们的使用往往相对复杂,需要对底层机制有深入理解。本文将详细...

    Java IO NIO and NIO 2 epub

    Java IO NIO and NIO 2 英文epub 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除

    nio.zip_NIO_NewIO_NIO.c_java NIO chm_java nio

    NIO(New IO)是Java平台中用于处理输入/输出操作的一种高级API,它在Java 1.4版本中引入,以替代传统的IO流模型。NIO提供了更高效、更灵活的数据传输方式,尤其适用于高并发和大数据量的场景。 在Java的NIO体系中...

    JAVA IO and NIO

    Java IO (Input/Output) 和 NIO (Non-blocking Input/Output) 是Java平台中用于处理输入和输出操作的重要部分。这两种技术在实现客户端与服务器之间的通信时起着至关重要的作用。下面将详细介绍Java IO和NIO的特点、...

    IO和NIO区别共1页.pdf.zip

    本文将深入探讨IO和NIO的区别,帮助开发者理解这两种机制的工作原理及其适用场景。 首先,我们来了解一下传统的IO模型。Java中的IO基于流(Stream)的概念,数据以字节或字符的形式从源流向目的地。IO模型是阻塞的...

    Java-NIO与IO的区别和比较.doc

    Java NIO(New Input/Output)是Java标准库在J2SE 1.4及后续版本中引入的一个重要更新,它的出现是为了改进传统的IO模型,提高I/O操作的效率和并发性。NIO的主要特点包括非阻塞I/O、字符转换、缓冲区以及通道等。 1...

    Java IO与NIO文档

    Java IO与NIO是Java平台中用于处理输入输出操作的核心技术。它们在处理数据传输、文件操作、网络通信等方面起着至关重要的作用。本篇将深入探讨这两个领域,旨在帮助开发者更好地理解和应用这些概念。 首先,Java ...

Global site tag (gtag.js) - Google Analytics