最近在学习Java Nio,网上查了一些例子,也到sun的官网看了下,找到一篇关于NIO介绍的文章,由于是英文,自己将它翻译过来了,先记录下进行备案。
http://download.oracle.com/docs/cd/E17476_01/javase/1.4.2/docs/guide/nio/
一些基本概念:
Channel —— 通道
Charset —— 字符集
Buffer —— 缓存
一、什么是NIO
NIO APIs 是在JDK1.4 引入的新特性,它大大提高了缓存管理、可伸缩的网络应用程序和文件I/O的性能,增加了字符集设置,正则表达式支持等功能。NIO APIs 为java.io包中的 I/O 操作提供了基础设施。
二、组成部分
- java.nio package: 缓存,贯穿整个NIO APIs
- java.nio.channels package: 道和选择器
- java.nio.charset package: 字符编码
- java.nio.channels.spi package: 通道的服务提供者类
- java.nio.charset.spi package: 字符集的服务提供者类
- 在 java.util.regex包中通过正则表达式模式功能,实现匹配字符序列。
- java.lang.CharSequence interface 实现了该接口的对象可以通过被当作方法的参数传入。String,StringBuffer和java.nio.CharBuffer类实现了这个接口.
注意:
新的InetSocketAddress和SocketAddress类,严格意义上不是NIO API 的部分,但却用它们。
三、使用Java NIO 改进的类
改进的类 | 改进点 |
FileInputStream,FileOutputStream | getChannel方法返回FileChannel对象 |
RandomAccessFile | getChannel方法返回FileChannel对象 |
InputStreamReader OutputStreamWriter | 构造函数已经增加了一个流和一个字符设置对象, 以及getEncoding方法已经修改为返回曾使用过的编码名称。 InputStreamReader和OutputStreamWriter类的构造函数已经分别加上存在的CharsetDecoder和CharsetEncoder作为参数 |
String | 新加了两个split方法。 又增加了subSequence方法,它是由CharSequence定义,String类已经实现。另外新增的3个方法:mathches,replaceAll,replaceFirst |
StringBuffer | 增加了subSequence方法,它是由CharSequence 接口定义, StringBuffer 已经实现的 |
Thread | Interrupt 方法已经通过线程通道I/O阻断方式进行改进。 |
DatagramSocket | receive和send方法已经更改抛出 java.nio.channels.IllegalBlockingModeException如果socket由一个通道,,而且通道是非阻塞模式。Close方法现在也是关闭Socket的通道,,如果它有一个,而且它新增的方法getChannel也返回当前所使用的通道。 |
ServerSocket | Accept和implAccept方法已修改为抛出java.nio. IllegalBlockingModeException 如果socket 已经有一个通道并且通道是在非阻塞模式下。与DatagramSocket类一样增加了getChannel 方法,修改了close方法。 |
Socket | getInputStream和getOutputStream方法已经修改为将全部的I/O操作委派给socket的通道,如果它有一个通道。connect方法已经修改为抛出一个 java.nio.IllegalBlockingModeException 如果socket有一个通道并且该通道处于非阻塞模式。与 DatagramSocket类一样,新增了getChannel方法和修改了close方法。 |
分享到:
相关推荐
博主还可能分享了实际示例代码,帮助读者更好地理解和掌握Java NIO。 至于`.classpath`和`.project`文件,它们是Eclipse IDE的工作空间配置文件,`.classpath`定义了项目的类路径,`.project`包含了项目设置。`bin`...
本资料"JavaNIO服务器实例Java开发Java经验技巧共6页"可能是某个Java开发者或讲师分享的一份关于如何在Java中构建NIO服务器的教程,涵盖了6个关键页面的内容。尽管具体的细节无法在此直接提供,但我们可以根据Java ...
4. **博客和技术文章**:许多技术博客和社区(如Stack Overflow、GitHub等)都有丰富的Java NIO教程和技术分享。 通过上述学习资源,你可以更好地掌握Java NIO的核心概念和技术细节,为实际开发工作打下坚实的基础...
自己总结的java中NIO的笔记,绘制了详细的思维导图,每个思维导图中均有详细的博文解释,方便大家学习和理解,免费分享给大家。适合java的爱好者和学习者
#资源达人分享计划# java nio从入门到精通的代码详解 主要结合博文进行学习 详情可配合我的博客进行学习 https://blog.csdn.net/weixin_47872288/article/details/120342049
"Java NIO实例UDP发送接收数据代码分享" Java NIO(Non-blocking I/O)是一种异步I/O模型,允许开发者在单个线程中处理多个I/O操作,从而提高程序的性能和可扩展性。在Java NIO中,DatagramChannel是专门用于发送...
用java写的项目,免费分享给大家,比较适合新手入门学习,欢迎下载使用。用java写的项目,免费分享给大家,比较适合新手入门学习,欢迎下载使用。用java写的项目,免费分享给大家,比较适合新手入门学习,欢迎下载...
《NIO入门》一书是理解Java NIO(New Input/Output)的重要参考资料,NIO在Java编程中扮演着至关重要的角色,特别是在处理高并发、大数据传输等场景下。本PDF文档将引领读者深入理解这一核心概念。 NIO,全称New ...
在"**NIO学习-Java源代码分享**"这个压缩包中,可能包含了关于NIO的示例代码,包括使用NIO进行文件操作、网络通信的实例,也可能包含Netty或Mina的部分源码,这些都可以作为学习和研究NIO技术的宝贵资源。...
教程内容涵盖:阻塞和非阻塞IO、Channel通道、Buffer缓冲区、Selector选择器、Pipe管道、FileLock文件锁,以及Path、Files、异步FileChannel和Charset字符编码等,并通过一个多人聊天室的综合案例,把所有的NIO知识...
java资源NIO网络框架 xSocket提取方式是百度网盘分享地址
NIO (New IO) 是Java SE 1.4及后续版本提供的新的IO API,可以替代标准的Java IO API。NIO提供了与标准IO不同的IO工作方式。 - **核心组件**: - **Buffer**:数据容器,用于存储数据。 - **Channel**:用于数据...
Java NIO(New Input/Output)网络框架是Java平台中用于高效处理I/O操作的一种机制。相较于传统的IO模型,NIO具有非阻塞、多路复用的特点,使其在高并发场景下表现优异,尤其适合于开发网络服务,如服务器应用、聊天...
Java NIO(New Input/Output)是Java 1.4版本引入的一套全新的I/O API,旨在提升Java程序在处理I/O密集型任务时的性能。NIO与传统的 Blocking I/O 不同,它采用非阻塞模式,允许单线程处理多个通道(channels),...
在本次演讲中,我们将分享我们在开发Project Grizzly NIO框架过程中学到的一些技巧和窍门。Project Grizzly是一个利用Java NIO(非阻塞I/O)技术来构建高性能、可扩展服务器的项目。在Java平台实现可扩展的服务器...
Java的非阻塞I/O(Non-blocking Input/Output, NIO)是Java 1.4引入的一个重要特性,它提供了一种不同于传统阻塞I/O的处理方式,尤其是在高并发和大数据传输场景下表现优越。NIO管道(Pipe)是NIO中用于线程间通信的...
在CSDN博客中,作者wgyscsf分享了一篇文章,详细介绍了NIO的用法。 在NIO模型中,以下几个核心组件是关键: 1. **通道(Channels)**:通道是数据传输的途径,可以将数据从一个地方传输到另一个地方。例如,...
虽然具体内容无法在此直接查看,但通常博主会分享如何创建通道、配置缓冲区、使用选择器以及在实际项目中应用NIO的方法。 标签中的"源码"可能意味着博客中会深入到NIO的内部实现,讨论相关类和方法的工作原理,这...
### Java技术分享知识点详解 #### 一、技术讨论 ##### 1.1 OFFHEAP -- 老宋分享 OFFHEAP(非堆内存)是一种不在JVM管理下的内存区域,通常用于存储大量数据,避免频繁的垃圾回收操作,从而提高性能。在Java中,...