为什么要使用NIO
企业级应用效率是关键。而CPU已不再是的束缚,效率主要消耗在IO上。java.io类则喜欢一铲子一铲子地加工数据。而操作系统喜欢整卡车地运来数据,有了NIO,就可以轻松地把一卡车数据备份到您能直接使用的地方(ByteBuffer对象)。
IO的常用概念
IO操作:向操作系统发出请求,把数据移出和移入缓冲区。
用户空间:是常规进程所在区域。JVM就是常规进程,驻守于用户空间。用户空间是非特权区域:比如,在该区域执行的代码就不能直接访问硬件设备。硬件通常不能直接访问用户空间。
内核空间:它能与设备控制器通讯,控制着用户区域进程的运行状态等等。最重要的是,所有I/O都直接或间接通过内核空间。在数据往来于用户空间与存储设备的过程中,内核负责数据的分解、再组合工作,因此充当着中间人的角色。
虚拟内存:意为使用虚假(或虚拟)地址取代物理(硬件RAM)内存地址
通道(Channel):Channel用于在字节缓冲区和位于通道另一侧的实体(通常是一个文件或套接字)之间有效地传输数据。
Socket:用于描述IP地址和端口。socket实质上提供了进程通信的端点。进程通信之前,双方首先必须各自创建一个端点,否则是没有办法建立联系并相互通信的。
DMA(Direct Memory Access,直接内存存取) 他允许不同速度的硬件装置来沟通.
内存分页:将一个页面分成两个或两个以上的页面。其中几个装入内存,其余存储于磁盘。
分享到:
相关推荐
在深入了解 Java NIO 的工作原理及其使用之前,我们首先来了解一下什么是 Java NIO(New I/O)。Java NIO 是 Java SE 1.4 版本引入的一个全新的 I/O API,用来替代传统的 I/O 类型,即 java.io 包下的类。 Java NIO...
标题中的“3种下载文件程序的思考,为何使用NIO进行异步网络通讯”提示了我们探讨的主题,即网络通信中的不同下载策略以及为何选择非阻塞I/O(Non-blocking I/O, NIO)作为异步通信的方式。在这个话题中,我们将深入...
而在NIO中,这些操作是非阻塞的,如果数据未准备好,通道会立即返回,不会挂起线程,这样就可以避免不必要的等待,提高效率。 5. 选择器(Selectors): 选择器允许单个线程监视多个通道的事件,当某个通道准备...
例如,在开发Web服务器时,可以使用NIO的非阻塞特性来处理大量的并发连接,而无需为每个连接创建单独的线程。 #### 7. 总结 NIO作为Java平台的一项重要技术革新,有效地解决了传统I/O模型中存在的诸多问题。通过...
Java NIO,全称为Non-Blocking Input/Output(非阻塞输入/输出),是Java标准库提供的一种替代传统的I/O模型的新技术。自Java 1.4版本引入NIO后,它为Java开发者提供了更高效的数据传输方式,尤其是在处理大量并发...
在Java编程中,NIO(New IO)是一种与传统IO不同的I/O模型,它提供了非阻塞的输入/输出操作,适用于高并发、大...NIO为高性能网络编程提供了强大的工具,理解并熟练运用这些概念对于开发高效、稳定的网络应用至关重要。
Java NIO(New IO)是Java 1.4版本引入的一个新特性,它提供了一种不同于传统IO(-blocking I/O)的I/O操作方式。传统的IO模型是基于流的,通常涉及阻塞式读写,而NIO则引入了通道(Channels)和缓冲区(Buffers)的...
Java NIO系列教程(一) Java NIO 概述 Java NIO系列教程(二) Channel Java NIO系列教程(三) Buffer Java NIO系列教程(四) Scatter/Gather Java NIO系列教程(五) 通道之间的数据传输 Java NIO系列教程(六)...
Java NIO 深入探讨了 1.4 版的 I/O 新特性,并告诉您如何使用这些特性来极大地提升您所写的 Java 代码的执行效率。这本小册子就程序员所面临的有代表性的 I/O 问题作了详尽阐述,并讲解了 如何才能充分利用新的 I/O ...
Java NIO,全称为Non-Blocking Input/Output(非阻塞输入/输出),是Java平台中用于替代标准I/O(BIO)模型的一种新机制。NIO在Java 1.4版本引入,提供了更高效的数据处理和通道通信方式,特别适用于高并发、大数据...
Netty是一个高性能、异步事件驱动的网络应用框架,它为Java开发人员提供了构建服务器和客户端应用程序的强大工具。NIO(Non-blocking Input/Output)是Java中的一个编程模型,用于处理大量的并发连接,尤其适用于高...
Java NIO(New IO)是Java 1.4版本引入的一个新特性,它为Java程序提供了非阻塞I/O操作的能力,极大地提升了Java在处理网络通信和文件读写时的性能。NIO与传统的IO( Blocking IO)模型相比,最大的区别在于其非阻塞...
6. **网络I/O**:NIO为TCP和UDP提供了SocketChannel和DatagramChannel,用于处理网络连接。SocketChannel用于TCP连接,而DatagramChannel则用于UDP的无连接通信。 7. **通道与缓冲区的交互**:数据总是通过通道读入...
Java NIO非堵塞技术实际是采取Reactor模式,或者说是Observer模式为我们监察I/O端口,如果有内容进来,会自动通知我们,这样,我们就不必开启多个线程死等,从外界看,实现了流畅的I/O读写,不堵塞了。 Java NIO...
在聊天室服务端,Selector的使用可以使得服务器在一个线程中管理多个客户端连接,避免了为每个连接创建单独线程带来的资源消耗。 4. **图形用户界面(GUI)**: 本项目中的聊天室客户端不仅实现了基于NIO的通信,...
本篇将详细讲解如何使用NIO实现邮件接收,主要涉及JavaMail API和NIO的核心概念。 首先,JavaMail API是Java平台上的一个用于处理邮件的开放源码库,它提供了创建、发送、接收和管理邮件的一系列接口和类。而NIO则...
在Java编程领域,NIO(New IO)是一个重要的特性,它是Java 1.4版本引入的,用于替代标准的IO API。NIO提供了一种非阻塞I/O操作的方式,特别适用于处理大量的并发连接,例如在文件传输、网络通信等场景。本主题...
总的来说,NIO为Java开发者提供了更高效的I/O处理能力,尤其在处理高并发和大流量场景时,它的优势更加明显。然而,NIO的学习曲线相对较陡峭,需要对操作系统级别的I/O模型有一定了解,但一旦掌握,将极大地提升系统...
### Java NIO 处理超大数据文件的知识点详解 ...综上所述,使用Java NIO处理超大数据文件时,关键是利用好内存映射文件技术和合理的数据读取策略,通过适当的分块和数据解析方法,可以有效地提升读取速度和处理能力。