起航学习网

- 让每个人都能学到最前沿新知识、新技能!
起航学习网
当前位置: 起航学习网 > 短期培训 > 编程语言 > Java Nio详解

Java Nio详解

时间:2022-08-14 14:43:48来源:零基础学Java 作者:Java学习网 已有: 名学员访问该课程

  快捷搜索:javanio详解

前言: Java NIO (New IO) 是 Java 的替代 IO API,意味着标准 Java IO和Java Networking API 的替代品。Java NIO 提供了与传统 IO API 不同的

Java NIO (New IO) 是 Java 的替代 IO API,意味着标准 Java IO和Java Networking API 的替代品。Java NIO 提供了与传统 IO API 不同的 IO 编程模型。注意:有时 NIO 被声称是指Non-blocking IO。然而,这并不是原本的意思。此外,NIO API 的某些部分实际上是阻塞的——例如文件 API——所以标签“非阻塞”会有点误导。

Java NIO:非阻塞 IO

Java NIO 使您能够进行非阻塞 IO。例如,线程可以要求通道将数据读入缓冲区。当通道将数据读入缓冲区时,线程可以做其他事情。一旦数据被读入缓冲区,线程就可以继续处理它。将数据写入通道也是如此。

Java NIO:通道和缓冲区

在标准 IO API 中,您使用字节流和字符流。在 NIO 中,您使用通道和缓冲区。数据总是从通道读入缓冲区,或从缓冲区写入通道。

Java NIO:选择器

Java NIO 包含“选择器”的概念。选择器是一个对象,可以监视多个通道的事件(例如:连接打开、数据到达等)。因此,单个线程可以监视多个通道的数据。

Java NIO 概述

Java NIO 由以下核心组件组成:

频道

缓冲器

选择器

Java NIO 有比这些更多的类和组件,但在我看来Channel,Buffer 和Selector构成了 API 的核心。其余的组件,例如 Pipe和FileLock只是与三个核心组件一起使用的实用程序类。因此,我将在本 NIO 概述中重点介绍这三个组件。其他组件在本教程其他地方的其自己的文本中进行了解释。请参阅本页右上角的菜单。

通道和缓冲区

通常,NIO 中的所有 IO 都以Channel. AChannel有点像流。从Channel数据中可以读入一个Buffer. 数据也可以从 aBuffer写入 a Channel。这是一个例子:

Java NIO:Channels将数据读入Buffers,Buffers将数据写入Channels

有几种Channel和Buffer类型。Channel以下是Java NIO 中的主要实现列表:

文件频道

数据报频道

套接字通道

服务器套接字通道

如您所见,这些通道涵盖了 UDP + TCP 网络 IO 和文件 IO。

这些类也有一些有趣的接口,但为了简单起见,我将把它们排除在 Java NIO 概述之外。在本 Java NIO 教程的其他文本中,将在相关的地方对它们进行解释。

Buffer以下是Java NIO 中的核心实现列表:

字节缓冲区

字符缓冲区

双缓冲

浮动缓冲区

整数缓冲区

长缓冲区

短缓冲

这些Buffer涵盖了您可以通过 IO 发送的基本数据类型:byte、short、int、long、float、double 和 characters。

Java NIO 还有一个MappedByteBuffer与内存映射文件一起使用的。不过,我将把它Buffer排除在概述之外。

选择器

ASelector允许单个线程处理多个Channel's。如果您的应用程序打开了许多连接(通道),但每个连接上的流量很低,这会很方便。例如,在聊天服务器中。

这是使用 aSelector处理 3的线程的图示Channel:

要使用 a Selector,您可以使用它注册Channel's。然后你称之为 select()方法。此方法将阻塞,直到有一个已注册通道的事件准备好。一旦方法返回,线程就可以处理这些事件。事件的示例是传入连接、接收到的数据等。

通过上述介绍,相信大家对Java Nio已经有所了解,大家如果想了解更多相关知识,可以关注一下IT培训网的Java基础教程,里面有更丰富的知识等着大家去学习,希望对大家能够有所帮助。

文章出自:http://qh.itpxw.cn/peixun/software/2022123721.html

文章标题:Java Nio详解



免责声明:本站文章均由入驻起航学习网的会员所发或者网络转载,所述观点仅代表作者本人,不代表起航学习网立场。如有侵权或者其他问题,请联系举报,必删。侵权投诉

(责任编辑:深圳学历教育网)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
培训学校
IT培训网 访问该机构站点 报名留言 加为好友 用户等级:注册会员 用户级别:10 机构名称:IT培训网 联 系 人:罗老师 联系电话:13783581536 联系手机:13783581536 在线客服:起航学习网客服 在 线 QQ:起航学习网客服 电子邮件: 网站域名:http://www.itpxw.cn 注册时间:2016-07-18 11:07 最后登录:2024-02-20 13:02
推荐内容