BIO与NIO

Posted chenxionghfut

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BIO与NIO相关的知识,希望对你有一定的参考价值。

先理解一下操作系统中的几个概念:(一下为个人理解,如有不当请见谅)

同步:用户进程触发IO操作以后,主动去轮询查看IO操作是否就绪,若没有则一直等待

异步:用户进程触发IO操作以后去做别的事情,IO操作完成以后会受到就绪的通知,异步最大的特点就是通知

 

I/O多路复用技术:多路可以理解为多条I/O流,每条I/O流可以用文件描述符来表示,进程/线程触发IO操作以后就会去做别的事情,

当某个IO操作就绪以后,文件描述符就会主动通知线程/进程。

BIO:同步阻塞IO,客户端发情请求时,为每一个请求创建一个线程去处理这些请求,当线程执行过程当中依赖于需要等待的资源时,

线程机会长期处于等待状态,线程数过多操作系统进行线程上下文的切换相对应的花销就大,tomcat中就默认使用BIO来处理请求,

但是tomcat维护了一个线程池,控制线程并发的数量。

NIO:同步非阻塞IO,NIO采用了多路复用器机制,以socket为例,多路复用器不断的轮询各个连接的状态,只有各个连接有流可读或可写时,

应用程序才去处理它,可以用少量的线程去处理大量请求

NIO.2:异步非阻塞,同样以socket为例,多路复用器不会去的轮询各个连接的状态,各个连接有流可读或可写时会主动通知

应用程序,才时候才去处理它,可以用少量的线程去处理大量请求。

以上是关于BIO与NIO的主要内容,如果未能解决你的问题,请参考以下文章

Java-IO与NIO

2.BIO与NIO区别

NIO与BIO

图灵学院15极致优化-高性能网络编程之BIO与NIO区别

第二章 BIO与NIO

0045BIO与NIO