`

java NIO系列资料

阅读更多

原文:

http://ifeve.com/overview/  (Java NIO 概述)

http://ifeve.com/channels/ (Java NIO系列教程(二) Channel

http://ifeve.com/buffers/ (Java NIO系列教程(三) Buffer

 

Java NIO 由以下几个核心部分组成:

  • Channels
  • Buffers
  • Selectors

虽然Java NIO 中除此之外还有很多类和组件,但在我看来,Channel,Buffer 和 Selector 构成了核心的API。其它组件,如Pipe和FileLock,只不过是与三个核心组件共同使用的工具类。因此,在概述中我将集中在这三个组件上。其它组件会在单独的章节中讲到。

 

Channel 和 Buffer

基本上,所有的 IO 在NIO 中都从一个Channel 开始。Channel 有点象流。 数据可以从Channel读到Buffer中,也可以从Buffer 写到Channel中。这里有个图示:

Channel和Buffer有好几种类型。下面是JAVA NIO中的一些主要Channel的实现:

  • FileChannel
  • DatagramChannel
  • SocketChannel
  • ServerSocketChannel

正如你所看到的,这些通道涵盖了UDP 和 TCP 网络IO,以及文件IO。

与这些类一起的有一些有趣的接口,但为简单起见,我尽量在概述中不提到它们。本教程其它章节与它们相关的地方我会进行解释。

以下是Java NIO里关键的Buffer实现:

  • ByteBuffer
  • CharBuffer
  • DoubleBuffer
  • FloatBuffer
  • IntBuffer
  • LongBuffer
  • ShortBuffer

这些Buffer覆盖了你能通过IO发送的基本数据类型:byte, short, int, long, float, double 和 char。

Java NIO 还有个 MappedByteBuffer,用于表示内存映射文件, 我也不打算在概述中说明。

Selector

Selector允许单线程处理多个 Channel。如果你的应用打开了多个连接(通道),但每个连接的流量都很低,使用Selector就会很方便。例如,在一个聊天服务器中。

这是在一个单线程中使用一个Selector处理3个Channel的图示:

要使用Selector,得向Selector注册Channel,然后调用它的select()方法。这个方法会一直阻塞到某个注册的通道有事件就绪。一旦这个方法返回,线程就可以处理这些事件,事件的例子有如新连接进来,数据接收等。

 

http://ifeve.com/java-nio-scattergather/ (Java NIO系列教程(四) Scatter/Gather

http://ifeve.com/java-nio-channel-to-channel/  (Java NIO系列教程(五) 通道之间的数据传输

http://ifeve.com/selectors/ (Java NIO系列教程(六) Selector)

http://ifeve.com/file-channel/ (Java NIO系列教程(七) FileChannel

http://ifeve.com/socket-channel/ (Java NIO系列教程(八) SocketChannel

http://ifeve.com/server-socket-channel/ (Java NIO系列教程(九) ServerSocketChannel

http://ifeve.com/datagram-channel/ (Java NIO系列教程(十) Java NIO DatagramChannel

http://ifeve.com/pipe/ (Java NIO系列教程(十一) Pipe

http://ifeve.com/java-nio-vs-io/ (Java NIO系列教程(十二) Java NIO与IO

分享到:
评论

相关推荐

    JavaNIO chm帮助文档

    Java NIO系列教程(一) Java NIO 概述 Java NIO系列教程(二) Channel Java NIO系列教程(三) Buffer Java NIO系列教程(四) Scatter/Gather Java NIO系列教程(五) 通道之间的数据传输 Java NIO系列教程(六)...

    Java NIO系列教程(一) Java NIO 概述

    Java NIO系列教程(一) Java NIO 概述

    Java NIO系列教程

    Java NIO系列教程 Java NIO Channel Buffer Selector SocketChannel

    Java NIO系列教材1

    Java NIO系列教材1

    JavaNIO中文教程1.pdf

    JavaNIO中文教程1.pdf

    Java NIO实例

    nio代码实例,Java NIO 系列教程,买不了吃亏,买不了上当

    Java NIO 系列教程1

    声明:ITeye精华章的版权属于ITeye站所有,严禁任何站转载本,否则必将追究法律责任!< > 猎头职位: 上海: Junior Product Manage

    Java-NIO-系列教程

    Java-NIO-系列教程

    java NIO学习系列 笔记

    Contents: 1 核心概念以及基本读写 2 缓冲区的实现机制 3 连网与异步IO 4 分散和聚集IO 5 文件锁定

    谈谈NIO的理解Java系列2021.pdf

    谈谈NIO的理解Java系列2021.pdf

    java nio&netty系列之三netty网络模型代码以及简化版代码示例

    NULL 博文链接:https://shaobenbin-gmail-com.iteye.com/blog/1859842

    Java-NIO-Netty框架学习

    资源名称:Java-NIO-Netty框架学习资源目录:【】Netty5.0架构剖析和源码解读【】Netty5用户指南【】Netty_in_Action(第五版-目录修正版)【】Netty_in_Action_v08_MEAP【】Netty_in_Action_v10_MEAP【】Netty_代码...

    Java IO图书

    共四本图书,JAVA IO系列经典著作。 JAVA I/O,NIO and NIO.2.pdf Java NIO (英文版).pdf Java NIO (中文版).pdf Pro Java 7 NIO.2.pdf

    java NIO 详解

    Java NIO(New IO)是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的Java IO API。本系列教程将有助于你学习和理解Java NIO。

    JAVA后端详细面试资料

    包括 Dubbo、Java基础、并发、集合、BIO,NIO,AIO,Netty、ElastSerarch、JVM、Linux、Mybatis、kafka、MySQL、Redis、RabbitMQ、Spring系列、设计模式、计算机网络等等详细面试题

    Java学习指南第四版下册

    《Java学习指南(第4版)(上、下册)》加入了从Java 6和Java 7发布以后的变化,包括新的语言功能、并发工具(Fork-Join框架)、新的NIO Files API、Java Servlet(3.0)等新主题,作者通过精心挑选的、富有实用性和趣味性...

    java8源码-javasource:Java8sourcecodeanalysis.Java源码解析系列,集合、线程、NIO等

    java8 源码 javasource Java8 source code analysis .Java源码解析系列,集合、线程、NIO等。 通过代码示例解析源码。

    java开源包6

    GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计一个有趣的动画了一系列的数字图像。使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,时间显示和处理方法前帧。 Java的...

    【Java入门知识图谱】帮助Java初学者成长

    《对线面试官》是我连载了近一年的一个讲人话面试系列,我曾经通过这些资料去斩获了令人惊叹的公司的offer,基本内容介绍了Java常问的知识点... 《对线面试官第一季》纯文版 简历 【对线面试官】如何写简历 Java...

    java8源码-JavaRobot:Java学习笔记,JavaLearningNote

    java8 源码 学习笔记(持续更新中) 所有文章均同步发布到微信公众号【JavaRobot】,关注微信公众号,及时得到文章推送,谢谢支持。 说明:如无特别说明,所有代码都...JavaConcurrent(Java并发系列) 【Java并发系列】

Global site tag (gtag.js) - Google Analytics