Java NIO-1.概述

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

  • Channels
  • Buffers
  • Selectors Java NIO拥有的类和组件比这些要多,但是channel,BufferSelector组成了这个API的核心。在我(原作者)看来,像Pipe和`FileLock这些类仅仅只是用于将这三个核心组件结合在一起用的。所以,概述这一节仅关注这三个组件,其他组件在其他单独的章节中介绍。

Channels和Buffers

一个典型的NIO从Channels开始。Channel有点像流,数据能从Channel读到Buffer中,也能从Buffer写到Channels中。如下图所示:

Channels read data into Buffers, and Buffers write data into Channels

Channel和Buffer有好几种类型,下面是Java NIO的几种实现:

  • FileChannel
  • DatagramChannel
  • SocketChannel
  • ServerSocketChannel

可以看到,这些通路涵盖了UDP和TCP网络IO以及文件IO。 和这些类一起也有一些有趣的接口,简洁起见,概述一节不做介绍,在本教程其他涉及到他们的地方再做解释。

下面是Java NIO中Buffer的一些核心的实现:

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

这些Buffer涵盖了你能通过IO传输的基础数据类型:字节,短整型,整型,长整型,浮点数,双精度浮点数和字符。 Java NIO还有一个MappedByteBuffer,用于将内存映射文件关联起来。这里也省略不做介绍。

Selector

Selector允许单个线程处理多个Channel。如果应用打开了很多连接(Channels),但是每个连接的流量又很少,它就非常好用了。例如聊天室服务器。 以下是一个例子,单线程使用一个Selector处理三个Channel

A Thread uses a Selector to handle 3 Channel's

要使用Selector,需要用它注册Channel,然后调用它的select()方法。这个方法将会阻塞直到某个注册的通路有事件就绪。一旦这个方法返回,线程将会处理这些事件。例如新入连接,数据就绪等。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Linux-vim

    悠扬前奏
  • Mac上用docker安装SQLserver

    悠扬前奏
  • LeetCode-194. 转置文件

    第一反应是用awk显示列,那么需要知道有多少列。就先用awk获取列数,再循环。应该这个答案缓存击败100%用户,但是用时击败4.02%,显然耗时有点多,需要改进...

    悠扬前奏
  • 【Java SE】Java NIO系列教程(一) Java NIO 概述

    Java NIO 由以下几个核心部分组成: Channels Buffers Selectors 虽然Java NIO 中除此之外还有很多类和组件,但在我看来...

    用户1257215
  • Java NIO 系列学习 02 - 概述

    Java NIO 有很多的类和组件,但核心的是 Channels, Buffers和Selectors。 其它的组件,像 Pipe 和 FileLock,只是...

    许杨淼淼
  • 2019腾讯广告算法大赛初赛分享-Part3(冠军篇)

    感谢队友带我carry,有幸拿到初赛的冠军,在这里我也将初赛思路做一下分享,一是帮助进行复赛的同学扩展些思路,二是帮助大家能从这次比赛中学习到不一样的东西。比赛...

    Coggle数据科学
  • 检测服务器端口是否被占用

    jianghaibobo
  • 58到家通用实时消息平台架构细节(Qcon2016)

    2016Qcon北京,业务核心架构场,《58到家通用实时消息平台架构细节》。 一、解决什么问题 + 难点 解决什么业务问题 (1)端到云的实时上报需求:58速运...

    架构师之路
  • Socket.IO + Express实现的跨浏览器、子域的聊天室

    实例中用到了(实例在Windows XP下运行):Node.js、Socket.IO、Express.js、jade、stylus

    meteoric
  • 「增长黑客」理论在 SaaS 领域的 9 个实际案例|编译

    编者:杨丽 张苏月 关键词:增长黑客,SaaS 增长黑客是一种不需要传统广告和市场推广便能快速扩张产品和公司的技术。其核心是以最快的方法、最低的成本、最高效的...

    人称T客

扫码关注云+社区

领取腾讯云代金券