BIO、NIO、多路复用

BIO与NIO

文章目录


引入

当用户向服务器发起请求时,应用服务器会为每一个用户请求分配一个线程,如果http请求不做任何事情或者做的事情很慢,势必会造成应用服务器不必要的线程开销。比如说有人在银行窗口办理业务,想要给自己申请一张银行卡,填写申请表格挺耗费时间,但是银行柜员不可以腾出身子为其他用户服务。银行柜员只能在等待当前客户填好表格办理好业务,才可以叫号下一位客户。应用服务器上面的线程也是这样的情况,不管当前http请求有多慢,线程也无法抽身去做其他事情,这就是BIO模式。如果我们允许线程去做其他事情,那这就是NIO模式。
tomcat默认使用的是BIO模式,但是在9.0之后采用的是NIO模式。9.0之前的tomcat可以采用jetty替换,jetty则是典型的NIO模式,而且他是模块化的架构,可以把不需要的功能简化掉,从而提升jetty性能。

面试点
什么事BIO?什么事NIO?两者区别?
BIO每当接受用户请求时,都会占用一个线程完成此次请求,不管这次请求有多么耗时,始终等待此线程完成,不可以去做其他事情,当请求过多的时候,造成服务器大量的线程开销;
NIO则允许在线程阻塞时去做其他事情,提高线程的利用率;
tomcat默认使用的是BIO模式,但是在9.0之后采用的是NIO模式。9.0之前的tomcat可以采用jetty替换,jetty则是典型的NIO模式,而且他是模块化的架构,可以把不需要的功能简化掉,从而提升jetty性能。

相关推荐

  1. HTTP复用

    2024-05-13 14:06:08       46 阅读
  2. IO复用

    2024-05-13 14:06:08       32 阅读
  3. io复用

    2024-05-13 14:06:08       27 阅读
  4. IO的复用

    2024-05-13 14:06:08       65 阅读
  5. Redis——IO复用

    2024-05-13 14:06:08       61 阅读
  6. IO复用--epoll

    2024-05-13 14:06:08       45 阅读
  7. BIO、NIO、复用

    2024-05-13 14:06:08       36 阅读
  8. 计算机网络——复用技术

    2024-05-13 14:06:08       47 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-13 14:06:08       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-13 14:06:08       100 阅读
  3. 在Django里面运行非项目文件

    2024-05-13 14:06:08       82 阅读
  4. Python语言-面向对象

    2024-05-13 14:06:08       91 阅读

热门阅读

  1. 负载均衡技术

    2024-05-13 14:06:08       31 阅读
  2. C语言笔记12

    2024-05-13 14:06:08       34 阅读
  3. 重症镇痛镇静

    2024-05-13 14:06:08       27 阅读
  4. iOS面经

    2024-05-13 14:06:08       36 阅读