Java NIO:BIO,NIO和AIO的区别

(1)BIO,同步阻塞式,一个连接一个线程。
使用BIO模式建立网络连接,需要在服务端启动一个ServerSocket,然后客户端启动Socket进行通信。服务器对每个请求建立若干线程等待请求,客户端发送请求后,先循询问服务端是否有线程,如果没有则等地啊或者遭到拒绝请求,如果有,客户端线程会等待请求结束后踩继续执行。
(2)NIO,同步非阻塞IO, 一个请求一个线程。
NIO基于Reactor,当Socket有流可读或者有可写入的Socket,操作系统会响应的通知引用程序处理,应用程序将流读取到缓冲或写入操作系统。此时是一个请求对应一个线程,当连接没有数据时候,也没有工作线程来处理。
(3)AIO,异步非阻塞IO,一个有效请求一个线程。
当进行读写操作,只需要直接进行调用API的读或者写方法即可。读/写方法都是异步,完成后会主动调用回调函数。对于读操作而言,当有流可读取时,操作系统会将可读的流传入读方法的缓冲区,并通知应用程序;对于写操作而言,当操作系统将写方法传递的流写入完毕的时候,操作系统主动通知应用程序。

猜你喜欢

转载自blog.csdn.net/FateRuler/article/details/81539511
今日推荐