iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >AJPFX关于Java NIO的概述总结
  • 559
分享到

AJPFX关于Java NIO的概述总结

2023-06-02 18:06:35 559人浏览 安东尼
摘要

Java NIO 由以下几个核心部分组成:ChannelsBuffersSelectors虽然Java Nio 中除此之外还有很多类和组件,但在我看来,Channel,Buffer 和 Selector 构成了核心的api。其它组件,如Pi

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

  • Channels
  • Buffers
  • Selectors

虽然Java Nio 中除此之外还有很多类和组件,但在我看来,Channel,Buffer 和 Selector 构成了核心的api。其它组件,如Pipe和FileLock,只不过是与三个核心组件共同使用的工具类。

Channel 和 Buffer基本上,所有的 IO 在NIO 中都从一个Channel 开始。Channel 有点象流。 数据可以从Channel读到Buffer中,也可以从Buffer 写到Channel中。这里有个图示:
AJPFX关于Java NIO的概述总结
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,用于表示内存映射文件, 我也不打算在概述中说明。
SelectorSelector允许单线程处理多个 Channel。如果你的应用打开了多个连接(通道),但每个连接的流量都很低,使用Selector就会很方便。例如,在一个聊天服务器中。
这是在一个单线程中使用一个Selector处理3个Channel的图示:
AJPFX关于Java NIO的概述总结
要使用Selector,得向Selector注册Channel,然后调用它的select()方法。这个方法会一直阻塞到某个注册的通道有事件就绪。一旦这个方法返回,线程就可以处理这些事件,事件的例子有如新连接进来,数据接收等

--结束END--

本文标题: AJPFX关于Java NIO的概述总结

本文链接: https://www.lsjlt.com/news/230831.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • AJPFX关于Java NIO的概述总结
    Java NIO 由以下几个核心部分组成:ChannelsBuffersSelectors虽然Java NIO 中除此之外还有很多类和组件,但在我看来,Channel,Buffer 和 Selector 构成了核心的API。其它组件,如Pi...
    99+
    2023-06-02
  • AJPFX总结Java 类与对象的初始化
    面试的时候,经常会遇到这样的笔试题:给你两个类的代码,它们之间是继承的关系,每个类里只有构造器方法和静态块,它们只包含一些简单的输出字符串到控制台的代码,然后让我们写出正确的输出结果。这实际上是在考察我们对于类的初始化知识的了解。...
    99+
    2023-06-02
  • java学习笔记_关于字符串概述
    一、String类String类代表字符串,是由字符构成的一个序列。创建String对象的方法很简单,有以下几种:1)用new来创建:String s1 = new String("my name is tongye");...
    99+
    2023-05-31
    java 字符串 ava
  • 关于数据库系统的概述
    目录一、数据库的发展 人工管理阶段二、数据库系统的组成和结构三、数据库系统的体系结构四、数据模型4.1 概念模型4.2 层次模型4.3 关系模型五、练习题一、数据库的发展 人工管理阶...
    99+
    2024-04-02
  • 关于Linux和web服务器的概述
    Linux是一种开源的操作系统,它提供了广泛的功能和灵活性,适用于各种用途,包括作为Web服务器的操作系统。Web服务器是一种软件,...
    99+
    2023-09-14
    Linux
  • 关于Java中的IO流总结(推荐)
    流的继承关系,以及字节流和字符流。 节点流FileOutputStream和FileInputStream和处理流BufferedInputStream和BufferedOutputStream。以及对应的FileOutputWriter...
    99+
    2023-05-31
    java io流 ava
  • Java中关于double、Double相关问题总结
    标题 java中double与Double的区别声明double变量的时候,加d与不加d有什么区别 java中float与double的区别java Double 详解BigDecimal、Double、String之间的互转j...
    99+
    2023-08-17
    Double
  • Java非阻塞I/O模型之NIO相关知识总结
    组件说明 (1)Channel:NIO模型中的管道,管道是链接建立和通信的重要组件,我们可以理解管道是一个容器环境,我们所有的I/O的建立读取都可以在这个容器中进行 (2)Selec...
    99+
    2024-04-02
  • Dart String字符串的常用方法总结概述
    目录Flutter中字符串的一些常用方法1 length :返回字符串的长度。2 isEmpty :判断字符串是否为空。3 toUpperCase() :将字符串中所有的小写字母转换...
    99+
    2023-05-18
    Dart String字符串方法总结 Dart String
  • python中面向对象的注意点概述总结
    目录一、继承二、是否继承object类的区别三、封装四、类方法、静态方法与属性方法五、多态六、python是否存在实质意义上的私有变量?总结一、继承 与java的继承不同python...
    99+
    2024-04-02
  • 关于jboss配置的总结
    安装/配置apache 2.2.4 和 mod_jk1.1配置负载均衡2、安装/配置jboss2.1 安装jdk1.5.112.2 解压jboss2.3 修改server.xml ,适应负载均衡。2.4 修改server.xml ,配置支持...
    99+
    2023-06-03
  • 关于Java三大特性之多态的总结
    面向对象的三大特性:封装、继承、多态。从一定角度来看,封装和继承几乎都是为多态而准备的。这是我们最后一个概念,也是最重要的知识点。定义:多态:指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。(...
    99+
    2023-05-30
    java 三大特性 多态
  • 关于java的arrays数组排序AJPFX的示例分析
    这期内容当中小编将会给大家带来有关关于java的arrays数组排序AJPFX的示例分析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Java API对Arrays类的说明是:此类包含用来操作数组(比如排...
    99+
    2023-06-02
  • mysql关于db.opt文件的总结
    总结 1、create database时会自动生成一个文件db.opt,存放的数据库的默认字符集,show create database时显示数据库默认字符集即db.opt中字符集 2、这...
    99+
    2024-04-02
  • 关于SpringBoot使用@Async的总结
    目录SpringBoot使用@Async总结如下方式会使@Async失效SpringBoot实现异步(Async)接口1. 启动类引入@EnableAsync注解2. 建立异步任务类...
    99+
    2024-04-02
  • 关于PaaS的纯干货总结
    关于PaaS的纯干货总结什么是PaaS PaaS是面向应用的核心平台。 从功能定义和核心价值分为三个层次:   1)自动化获取资源进行部署;   2)提供标准化的编程框架和服务来帮助应用开发和运行实现...
    99+
    2023-06-03
  • 关于C++中的static关键字的总结
    1.面向过程设计中的static1.1静态全局变量在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量。我们先举一个静态全局变量的例子,如下: 复制代码 代码如下...
    99+
    2022-11-15
    c语言 static
  • 关于Java多线程上下文切换的总结
    目录什么是上下文切换上下文切换代码测试引起线程上下文切换的原因如何减少上下文切换什么是上下文切换 即使是单核CPU也支持多线程执行代码,CPU通过给每个线程分配CPU时间片来实现这个...
    99+
    2023-05-19
    Java 多线程 Java 上下文切换
  • 关于MyBatis结果映射的实例总结
    目录前言简单字段映射利用 constructor 指定构造方法利用 association 关联一个复杂类型利用 collection 关联多个复杂类型查询具有树形结构的数据参考资料...
    99+
    2024-04-02
  • Java梳理总结关于static关键字常见问题
    目录1、static是什么意思?2、为什么使用static关键字?3、Java中是否可以覆盖(override)一个private或者是static的方法?4、是否可以在static...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作