BIO 与 NIO 的核心区别

date: 2019-08-15

什么是BIO

在通信领域,BIO表示同步阻塞模式的通信方式。即程序为每一个连接分配一个单独的线程进行处理,当没有数据在传输时,线程会保持阻塞状态,等待数据,这时线程是无法执行其他操作的。

这种模式存在一个显而易见的问题,那就是当一个服务器的访问量达到一定的数量级时,大量的线程会占用极大的服务器资源,而这些线程并不是一直都在处理数据,反而大部分可能处于阻塞状态,这无疑是对服务器资源的一种极大的浪费,而且新来的请求可能会因为服务器无法负载而无法处理。为了处理这种情况,Java在jdk1.4的版本引入了NIO。

什么是NIO

与BIO相对的,NIO表示同步非阻塞模式的通信方式。

在介绍NIO之前,大家可能要先了解一个概念“线程池”。顾名思义,线程池就是存放线程的地方,程序在其中存放了大量的线程,在需要的时候可以从中取出一个闲置线程,让它执行某些操作。

如此,大家应该已经想到NIO模式是如何处理大量的访问、请求的了。即程序在处理连接请求时,并不会为每个连接都开辟一个单独的线程,而是先将他们搁在一边,等到有数据要进行传输时,程序才从线程池中寻找一个闲置的线程,让它去处理。虽然这种模式依旧可能会发生一些BIO中存在的情况,因为当线程池中的线程全部在工作时,新来的请求会和BIO模式中一样,无法进行有效的处理,但至少可以保证所有的线程都在工作,没有浪费服务器的资源。

这篇博客博主只是简单的介绍了一下bio与nio的核心区别,更深入的知识博主也在学习中

个人博客:https://wilfredshen.cn/

posted @ 2020-05-08 23:39  三尺青锋丶  阅读(247)  评论(0)    收藏  举报