开发者社区> 问答> 正文

java nio 一个channel如何处理大量请求?? 400 报错

java nio 一个channel如何处理大量请求?? 400 报错

java nio中说:可以将一个selector注册到多个channel上。

但是,一个channel绑定了一个端口,这样我理解,当有大量连接请求连接到这同一个端口时,岂不是让selector这一个线程串行处理这些个大量的请求??而且这一个channel可以同时接受这大量的请求吗???这样岂不是效率更低了吗???

展开
收起
爱吃鱼的程序员 2020-06-03 15:05:06 934 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    新建线程也同样需要时间,如果很快的话,eventloop就可以了

    ######

    nio同步非阻塞的模型,是为了解决有限的计算机线程资源,对于处理大量连接(百万级别连接)的瓶颈。nio底层是依赖于poll, epoll模型,就是为了解决计算机处理百万级别连接的瓶颈。

    传统的同步阻塞处理IO,一个线程对应一个连接,基本无法通过百万线程处理百万界别连接。

    ######

    兄弟你可能没能完全理解nio,纠正下几个不正确的点:

    1)是把channel注册到selector上,相当于一个Selector可以处理多个channel。(你可以把一个channel理解为服务端和客户端的一个连接所开通的数据通道)

    2)不是channel处理大量请求,而是selector可以。Selector可以不停的去轮询注册过感兴趣事件的channel, 基于内核的epoll回调机制去获得发生事件的channel,然后再对这些channel进行挨个批量的处理。

    随时欢迎来讨论交流学习

    ######那这个selector处理这些channel是同步的么,还是说会建多个线程?
    2020-06-03 17:13:00
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载