前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java NIO 系列学习 02 - 概述

Java NIO 系列学习 02 - 概述

作者头像
许杨淼淼
发布2019-12-29 20:06:29
3120
发布2019-12-29 20:06:29
举报
文章被收录于专栏:醉程序醉程序

Java NIO 包括了下面几个核心组件

  • Channels
  • Buffers
  • Selectors

Java NIO 有很多的类和组件,但核心的是 Channels, BuffersSelectors。 其它的组件,像 PipeFileLock,只是跟上面这三个核心组件组合使用的工具类。 因此我们着重介绍这三个核心组件。

Channels and Buffers

通常,所有的IO操作在NIO中都会开始于 Channel。 一个Channel类似于stream,数据从Channel读取到Buffer, 数据也可以从Buffer写入到Channel。 它们的关系就是下面这个图示:

下面是一些主要的Channel实现类,这些Channel覆盖了 UDP + TCP network IO 和 File IO

  • FileChannel
  • DatagramChannel
  • SocketChannel
  • ServerSocketChannel

下面是一些主要的Buffer实现类,覆盖了基本数据类型: byte, char, double, float, int, long, short

  • ByteBuffer
  • CharBuffer
  • DoubleBuffer
  • FloatBuffer
  • IntBuffer
  • LongBuffer
  • ShortBuffe

Selectors

Selector 可以让一个线程同时处理多个Channel。适用于我业务系统同时有多个低流量的连接,比如即时通讯。 下面是一个Selector处理多个Channel的示例图:

要使用Selector,你需要注册ChannelSelector,然后调用Selectorselect()方法。 这个方法会一直阻塞直到监听到有Channel注册事件。只要这个方法正常返回了,线程就可以处理这些事件,比如建立了连接、收到了客户端发送的数据等等。

参考

  1. Java NIO Overview
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年4月16日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Channels and Buffers
  • Selectors
  • 参考
相关产品与服务
即时通信 IM
即时通信 IM(Instant Messaging)基于腾讯二十余年的 IM 技术积累,支持Android、iOS、Mac、Windows、Web、H5、小程序平台且跨终端互通,低代码 UI 组件助您30分钟集成单聊、群聊、关系链、消息漫游、群组管理、资料管理、直播弹幕和内容审核等能力。适用于直播互动、电商带货、客服咨询、社交沟通、在线课程、企业办公、互动游戏、医疗健康等场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档