Java中的I/O模型 在JDK1.4之前,基于Java的所有socket都是使用阻塞I/O(BIO),JDK1.4提供了非阻塞I/O(NIO)功能,虽然称为NIO但实际上底层模型是I/O多路复用,JDK1.7提出了异步I/O(AIO)功能。
BIO/NIO/AIO区别概述:
Socket
和SeverSocket
相对应的SocketChannel
和ServerSocketChannel
两种不同的套接字的通道实现,两种通道都支持阻塞和非阻塞I/O模型。阻塞模型同传统的I/O一样,比较简单但是性能和可靠性都不好;非阻塞模型正好与之相反。对于低负载、低并发的应用程序,可以使用同步阻塞I/O来提升开发速率和更好的维护性;对于高负载、高并发的(网络)应用,应使用NIO的非阻塞模型来开发。NIO虽然提供了非阻塞的方法,但是NIO的IO行为还是同步的,对于NIO来说,我们的业务线程是在IO操作准备好时,得到通知,接着就由这个线程自行进行I/O操作,IO操作本身是同步的。
待补充。。。
来自Java Guide面试突击版,百度可得最新版本,这里有删减和修正。