Java干货小知识,BIO,NIO,AIO 有什么区别?_java自学_java相关资讯_成都java培训机构

Java干货小知识,BIO,NIO,AIO 有什么区别?

  • 作者:创始人
  • 发表时间:2022-01-04 10:25:41

大家在学习Java过程中会学习到IO流,那么IO流中的BIO,NIO,AIO 有什么区别?

BIO(BlockingI/O):SynchronizedI/O:同步阻塞I/O模式,数据的读写必须阻塞一个线程。当活跃连接数量并不太大(小于单台1000)时,这个模式会更好一些,使每个连接都能集中精力进行I/O,编程模型简单,而且无需过度考虑系统过载、限制流等问题。线程池本身是一种自然的漏斗,它缓冲某些系统无法处理的连接和请求。然而,当有十万甚至百万级连接时,传统的BIO模型将无能为力。这就要求建立一个更有效的I/O处理模型,以适应较大的并发量。

BIO,NIO,AIO 有什么区别?

NIO(NewI/O):NIO是一种同步、非阻塞的I/O模型,在Java1.4中引入了一个对应于java.nio包的NIO框架,提供了Channel、Selector、Buffer等等。NIO中的N可以理解为Non-blocking,不仅仅是New。其提供了面向缓冲区的基于通道的I/O操作方法。NIO提供SocketChannel和ServerSocket,这两个不同的socket通道实现,这与传统BIO模型中的Socket和ServerSocketChannel相对应,这两个信道都支持阻塞和非阻塞模式。与传统的支持方式使用阻塞模式一样,它更简单,但性能和可靠性都很差;非阻塞模式是完全相反的。同步阻塞I/O可用于低负载、低并发应用程序,以提高开发速度并改善维护率;对于高负载、高并发(网络)应用程序,应该使用NIO的非阻塞模式进行开发。

AIO(AsynchronousI/O):AIO也叫NIO2。NIO的改进版本NIO2引入了Java7,这是异步、非阻塞IO模型。异步IO是根据事件和回调机制来实现的,也就是说,应用操作后将直接返回,并且没有阻塞,当后台处理完成后,操作系统将通知相应的线程执行后续操作。AIO是异步IO的简称,尽管NIO在网络运行中,提供了非阻塞方法,但NIO的IO行为仍然同步。对NIO而言,我们的业务线程是在IO操作准备就绪时收到通知,然后再由该线程自己执行IO操作,IO操作本身是同步的。

BIO,NIO,AIO 有什么区别?关注知了堂成都Java培训,带你了解更多Java相关知识小干货和更多相关问题。