先理解一下操作系统中的几个概念:(一下为个人理解,如有不当请见谅)
同步:用户进程触发IO操作以后,主动去轮询查看IO操作是否就绪,若没有则一直等待
异步:用户进程触发IO操作以后去做别的事情,IO操作完成以后会受到就绪的通知,异步最大的特点就是通知
I/O多路复用技术:多路可以理解为多条I/O流,每条I/O流可以用文件描述符来表示,进程/线程触发IO操作以后就会去做别的事情,
当某个IO操作就绪以后,文件描述符就会主动通知线程/进程。
BIO:同步阻塞IO,客户端发情请求时,为每一个请求创建一个线程去处理这些请求,当线程执行过程当中依赖于需要等待的资源时,
线程机会长期处于等待状态,线程数过多操作系统进行线程上下文的切换相对应的花销就大,tomcat中就默认使用BIO来处理请求,
但是tomcat维护了一个线程池,控制线程并发的数量。
NIO:同步非阻塞IO,NIO采用了多路复用器机制,以socket为例,多路复用器不断的轮询各个连接的状态,只有各个连接有流可读或可写时,
应用程序才去处理它,可以用少量的线程去处理大量请求
NIO.2:异步非阻塞,同样以socket为例,多路复用器不会去的轮询各个连接的状态,各个连接有流可读或可写时会主动通知
应用程序,才时候才去处理它,可以用少量的线程去处理大量请求。