《Java I/O 模型》Java AIO

得意时要看淡,失意时要看开。不论得意失意,切莫大意;不论成功失败,切莫止步。志得意满时,需要的是淡然,给自己留一条退路;失意落魄时,需要的是泰然,给自己觅一条出路《Java I/O 模型》Java AIO,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

《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://www.bmabk.com/index.php/post/157030.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!