当前位置: 首页 > 知识库问答 >
问题:

Tomcat中NIO和BIO的根本区别是什么?

姬锐
2023-03-14

在Tomcat中设置NIO连接器后,我们有N个池线程和M个工作线程。

与生物连接器设置,我们可以有N*M线程池线程。那么两个连接器之间会有什么不同呢?

共有1个答案

华炜
2023-03-14

在BIO中,每个新连接都从连接器线程池中分配一个线程,该线程一直被分配给该连接,直到连接关闭。这意味着线程在请求之间长时间处于空闲状态(即在HTTP保持活动期间)。

在NIO中,每个新连接都传递给轮询器。当连接上有数据要处理时,会通知轮询器线程。然后,轮询器将一个线程分配给连接器线程池中的连接,该线程将一直被分配给该连接,直到所有数据都被读/写。然后将连接传递回Poller,以便Poller可以监视更多数据。

简而言之,这使得NIO更具可伸缩性。BIO要求每个连接的线程池中有一个线程。NIO可以维护比BIO多得多的连接,并且对于每个并发处理的请求,NIO只需要线程池中的一个线程。

 类似资料:
  • 本文向大家介绍BIO,NIO,AIO 有什么区别?相关面试题,主要包含被问及BIO,NIO,AIO 有什么区别?时的应答技巧和注意事项,需要的朋友参考一下 BIO:Block IO 同步阻塞式 IO,就是我们平常使用的传统 IO,它的特点是模式简单使用方便,并发处理能力低。 NIO:New IO 同步非阻塞 IO,是传统 IO 的升级,客户端和服务器端通过 Channel(通道)通讯,实现了多路复

  • 客户端发送另一个请求,服务器再次挂起该请求。 当这种情况持续发生时,会使用多少线程?

  • 本文向大家介绍Windows和Linux之间的根本区别是什么?,包括了Windows和Linux之间的根本区别是什么?的使用技巧和注意事项,需要的朋友参考一下 视窗 窗口操作系统是磁盘操作系统的扩展。 Windows是最流行,最简单的操作系统,任何可以阅读和理解基本英语的人都可以使用Windows,因为它不需要任何特殊培训。 它要求DOS最初运行各种应用程序。因此,应该将DOS安装到内存中,然后才

  • 问题内容: 我最近在读Redis。Redis基于I / O复用实现了一个简单的事件驱动库。Redis表示将选择系统支持的最佳多路复用,并提供以下代码: 我想知道它们是否存在根本的性能差异?如果是这样,为什么? 最好的祝福 问题答案: 通常,所有异步I / O子系统都有不同的内部结构,但是在当前特定情况下,这些具体的异步I / O库用于支持尽可能多的平台。那是: evport = Solaris 1

  • 问题内容: 我最近从“高级”开发人员/同事那里得到了一些关于C#垃圾收集器的非常错误的建议,例如… “在C#中,您需要在所有地方使用析构函数,因为不能依赖垃圾收集器。” “不能将C#垃圾收集器视为Java垃圾收集器”。 就我所知,这听起来非常可疑,据我所知,C#和Java垃圾收集器之间的区别如下… C#是分代垃圾收集器,Java是1.6中的并发标记清除,而G1是具有Java 7的新的默认(分代)垃

  • (1)同步阻塞BIO 一个连接一个线程。 JDK1.4之前,建立网络连接的时候采用BIO模式,先在启动服务端socket,然后启动客户端socket,对服务端通信,客户端发送请求后,先判断服务端是否有线程响应,如果没有则会一直等待或者遭到拒绝请求,如果有的话会等待请求结束后才继续执行。 (2)同步非阻塞NIO NIO主要是想解决BIO的大并发问题,BIO是每一个请求分配一个线程,当请求过多时,每个