《Java IO 模型》Java AIO

《Java IO 模型》Java AIO,第1张

Java I/O 模型》专栏文章索引
👉《Java I/O 模型》Java BIO
👉《Java I/O 模型》Java NIO
👉《Java I/O 模型》Java AIO

📜在之前的两篇博客中,我们分别学习了传统的 Java BIO 和当今使用比较多的 Java NIO,那么最后一个阶段再简单了解一下 Java AIO 吧(由于种种原因,目前 Java AIO 使用的并不是很多,因此暂且简单的介绍一下)。

📙Java AIO(Asychronous I/O) 即 Java 异步非阻塞 I/O,JDK 1.7 开始支持,它是对 JDK1.4 中提出的同步非阻塞I/O(NIO) 的进一步增强。服务器实现模式为一个有效请求一个线程,客户端的 I/O 请求都是由 *** 作系统先完成,完成之后再通知服务端应用去启动线程进行处理。它是基于 NIO 模式,因此又被称为 NIO 2.0.

📕简单地说,在 Java AIO 模式下:客户端发起请求之后不需要等待服务端响应可以做其他的事情,服务端处理完之后会将处理结果通知客户端,客户端这个时候会到指定的缓存区获取数据。

🎉Java AIO 虽然是基于 Java NIO 的,但是与 Java NIO 又有些不同

  • 🧨对于读 *** 作而言,当有流可读时, *** 作系统会将可读的流传入 read 方法的缓存区。
  • 🧨对于写 *** 作而言,当 *** 作系统将 write 方法传递的流写入完毕时, *** 作系统主动通知应用程序。
  • 🧨因此,read/write 方法都是异步的,完成后会主动调用回调函数。

🎉在 Java AIO 中通道(Channel) 的接口是异步的,主要有四个异步通道

  • 🧨AsychronousSocketChannel
  • 🧨AsychronousServerSocketChannel
  • 🧨AsynchronousFileChannel
  • 🧨AsynchronousDatagrmChannel

🎉BIO、NIO、AIO 使用场景对比

  • 🧨BlO 模式适用于连接数目比较小且固定的架构,这种方式对服务器资源要求比较高,并发局限于应用中, JDK1.4 以前的唯一选择,但程序直观简单易理解。
  • 🧨NIO 模式适用于连接数目多且连接比较短(轻 *** 作)的架构,比如聊天服务器,并发局限于应用中,编程比较复杂,JDK1 .4 开始支持。
  • 🧨AlO 方式使用于连接数目多且连接比较长(重 *** 作)的架构,比如相册服务器,充分调用 *** 作系统参与并发 *** 作,编程比较复杂,JDK1.7 开始支持。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/883254.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-14
下一篇 2022-05-14

发表评论

登录后才能评论

评论列表(0条)

保存