BIO 和NIO、AIO的区别

一、基本概念

BIO:   Block input output 同步阻塞io:

服务器实现模式为一个连接建立一个线程,即客户端有连接请求时,服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情,会造成不必要的线程开销,可以通过线程池机制改善

 

NIO :non-blocking input output 同步非阻塞io:

服务器实现模式为一个请求一个线程,即客户端发送的连接请求都会注册到多路复用器(Selector)上,多路复用器论询到连接有IO请求时才启动一个线程进行处理

 

AIO:Asynchronous input output  异步非阻塞io:

二、BIO 和NIO两者的区别

首先NIO 非阻塞,当selecter 检测到有请求时采取调用线程去读取数据,而BIO的则是一直阻塞在哪里等待请求,其次NIO 节省线程,用过的线程如果执行完任务可以被调度去执行其他任务,一个线程处理多条任务,提升线程使用率。也降低了线程资源的浪费。

 

三、NIO和AIO的区别

异步与同步的区别,AIO的读写操作都是异步操作,读写的过程还可以干其他事,当读写完毕后会按照回调函数的方式通知业务函数继续下一步操作。所以AIO 适合于连接数目多且连接比较长的场景,读写耗时的场景。而NIO则适合连接数目多且连接比较短的操作。

posted @ 2020-11-08 22:13  狭路相逢智者胜  阅读(543)  评论(0编辑  收藏  举报