栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

[ Java | NIO详解 | 1/5 ] 三大组件 - Channel、Buffer、Selector

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

[ Java | NIO详解 | 1/5 ] 三大组件 - Channel、Buffer、Selector

NIO - New IO | Non-blocking IO,非阻塞 IO

Channel & Buffer

        channel 是读写数据的双向通道,可以从 channel 将数据读入 buffer,也可以将 buffer 的数据写入 channel。channel 比 stream 更为底层。

常见的 Channel

  • FileChannel - 文件通道

  • DatagramChannel - UDP 通道

  • SocketChannel - TCP 通道

  • ServerSocketChannel - TCP 通道

常见的 Buffer

  • ByteBuffer - 以字节为单位缓冲数据

    • MappedByteBuffer

    • DirectByteBuffer

    • HeapByteBuffer

  • [ Short | Int | Long | Float | Double | Char ] Buffer

Selector

多线程版服务器端缺点:

        一个连接对应一个线程,成本过高(内存占用大、线程上下文切换成本高),只适用连接数较少的场景

线程池版服务器缺点:

        阻塞模式(BIO)下,一个线程仅能服务一个 socket 连接,故仅适用短连接场景。线程不能被充分的利用,大部分时间在等待。

Selector 版服务器:

        Selector 可配合一个线程管理多个 Channel,监测这些 Channel 上发生的事件。在非阻塞模式(NIO)下线程可被充分利用。适合连接数多,流量低的场景(low traffic)。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/490307.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号