BIO NIO AIO简短总结

BIO同步阻塞IO

在传统的I/O流交互时,BIO实现是这样的

socket服务端绑定IP,开启端口监听,然后一直阻塞等待客户端请求,当客户端与服务端创建连接发送请求时,服务端为每个请求开启一个新的线程,然后继续阻塞监听其他客户端的请求

在高并发的场景下,每个连接对应一个线程,有的连接不需要处理任何请求,但也会开启新的线程,线程是很珍贵的资源,当达到服务端最大连接数时,可能导致服务器宕机;这也是BIO的最大弊端;

NIO同步非阻塞IO

NIO采用selector多路复用器,socket服务端在该复用器上注册chanel,客户端也在复用器上注册chanel创建连接,只需要一个线程或者很少的线程对注册在多路复用器上的channel

进行轮询对于需要进行IO操作的请求开启一个新的线程进行处理,因为是同步操作,当这个线程在处理等待资源时,并发量上来时也会阻塞,出现跟BIO一样的问题;

AIO异步非阻塞IO

AIO与BIO的不同就是在处理IO操作时,API提供了异步读写IO操作,不会让线程等待阻塞,并且异步读写完后,操作系统主动通知应用程序;

你可能感兴趣的:(BIO NIO AIO简短总结)