首页 > Web开发 > 详细

Netty基础1-NIO-三大组件

时间:2021-04-13 10:15:07      阅读:17      评论:0      收藏:0      [点我收藏+]

NIO

NIO(non-blocking io:非阻塞io)

1、三大组件

Channel

  • 类似于stream,就是读写数据的双向通道,可以从channel 将数据读入buffer也可以将buffer的数据写入channel,而之前的stream要么是输出,要么是输入,channel比stream更为底层

  • 常见的Channel有:FileChanner、DatagramChannel、SocketChannel、ServerSocketChannel

Buffer

  • 用来缓冲数据

  • 常见的buffer有:

    ByteBuffer:MappedByteBuffer、DirectByteBuffer、HaepByteBuffer

    ShortBuffer

    intBuffer

    LongBuffer

    FloatBuffer

    DoubleBuffer

    CharBuffer

Selector:选择器

  • 结合服务器的设计演化来理解Selector的用途

  • 多线程版的设计

    技术分享图片

    缺点:内存占用高、线程上下文切换成本高、只适合连接数少的场景

  • 线程池版

    技术分享图片

    缺点:阻塞模式下,线程仅能处理一个socket连接、仅适合短连接场景(http请求)

  • selector版

    selector 的作用就是配合一个线程来管理多个channel,获取这些channel上发生的事情,这些channel哦你工作在非阻塞模式下,不会让线程吊死在一个channel上,适合连接数特别多的,大流量低的场景(low traffic)

    技术分享图片

    调用selector的select()会阻塞知道channel发生了读写就绪事件,这些事件发生,select方法就会返回这些事件交给thread来处理

Netty基础1-NIO-三大组件

原文:https://www.cnblogs.com/dgjword/p/14651558.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!