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

时间:2019-04-26 16:39:29

标签: tomcat nio

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

设置BIO连接器后,线程池中可以有N * M个线程。那么,两个连接器之间有什么区别?

1 个答案:

答案 0 :(得分:0)

在BIO中,每个新连接都会从连接器线程池中分配一个线程,并且该线程将一直分配给该连接,直到该连接关闭。这意味着线程在两次请求之间的空闲时间很长(例如,在HTTP保持活动状态)。

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

简而言之,这使NIO更具可扩展性。 BIO要求每个连接在线程池中有一个线程。 NIO可以维持比BIO更多的连接,并且每个并发处理的请求在线程池中仅需要一个线程。