BIO 与 NIO 的核心区别
date: 2019-08-15
什么是BIO
在通信领域,BIO表示同步阻塞模式的通信方式。即程序为每一个连接分配一个单独的线程进行处理,当没有数据在传输时,线程会保持阻塞状态,等待数据,这时线程是无法执行其他操作的。
这种模式存在一个显而易见的问题,那就是当一个服务器的访问量达到一定的数量级时,大量的线程会占用极大的服务器资源,而这些线程并不是一直都在处理数据,反而大部分可能处于阻塞状态,这无疑是对服务器资源的一种极大的浪费,而且新来的请求可能会因为服务器无法负载而无法处理。为了处理这种情况,Java在jdk1.4的版本引入了NIO。
什么是NIO
与BIO相对的,NIO表示同步非阻塞模式的通信方式。
在介绍NIO之前,大家可能要先了解一个概念“线程池”。顾名思义,线程池就是存放线程的地方,程序在其中存放了大量的线程,在需要的时候可以从中取出一个闲置线程,让它执行某些操作。
如此,大家应该已经想到NIO模式是如何处理大量的访问、请求的了。即程序在处理连接请求时,并不会为每个连接都开辟一个单独的线程,而是先将他们搁在一边,等到有数据要进行传输时,程序才从线程池中寻找一个闲置的线程,让它去处理。虽然这种模式依旧可能会发生一些BIO中存在的情况,因为当线程池中的线程全部在工作时,新来的请求会和BIO模式中一样,无法进行有效的处理,但至少可以保证所有的线程都在工作,没有浪费服务器的资源。
这篇博客博主只是简单的介绍了一下bio与nio的核心区别,更深入的知识博主也在学习中
个人博客:https://wilfredshen.cn/
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号