当前位置: 首页 > 面试题库 >

AIO (Asynchronous I/O)

朱典
2023-03-14
本文向大家介绍 AIO (Asynchronous I/O)相关面试题,主要包含被问及 AIO (Asynchronous I/O)时的应答技巧和注意事项,需要的朋友参考一下

AIO 也就是 NIO 2。在 Java 7 中引入了 NIO 的改进版 NIO 2,它是异步非阻塞的IO模型。异步 IO 是基于事件和回调机制实现的,也就是应用操作之后会直接返回,不会堵塞在那里,当后台处理完成,操作系统会通知相应的线程进行后续的操作。

AIO 是异步IO的缩写,虽然 NIO 在网络操作中,提供了非阻塞的方法,但是 NIO 的 IO 行为还是同步的。对于 NIO 来说,我们的业务线程是在 IO 操作准备好时,得到通知,接着就由这个线程自行进行 IO 操作,IO操作本身是同步的。(除了 AIO 其他的 IO 类型都是同步的,这一点可以从底层IO线程模型解释,推荐一篇文章:《漫话:如何给女朋友解释什么是Linux的五种IO模型?》 )

查阅网上相关资料,我发现就目前来说 AIO 的应用还不是很广泛,Netty 之前也尝试使用过 AIO,不过又放弃了。

参考

  • 《Netty 权威指南》第二版
  • https://zhuanlan.zhihu.com/p/23488863 (美团技术团队)
 类似资料:
  • aio-enhance(音译:硬汉) 是一款无侵入式的 Java AIO 内核增强类库(注意:这不是一款通信框架),解决原生 AIO 架构设计中存在的缺陷,提供更高效、更稳定的通信能力。 aio-enhance 采用了 NIO 技术实现了一套全新的异步 IO 模型,兼容完整的 Java AIO 接口。用户可自由选择 Java 原生提供的,或者 aio-enhance 增强的 AIO 实现,架构如下

  • Linux 异步IO 编译时链接实时库,使用选项 -lrt aiocbstruct aiocb是”asynchronous I/O control block”的缩写。 struct aiocb { /* The order of these fields is implementation-dependent */ int aio_fildes;

  • 问题内容: 我正在测试内核异步io函数(不是posix aio),并试图弄清楚它是如何工作的。下面的代码是一个完整的程序,其中我简单地将一个数组重复写入使用O_DIRECT打开的文件中。我在回调函数中收到一个错误“写错的字节期望1024得到0”(请参阅​​work_done()中的fprintf语句)。 对于不熟悉内核aio的用户,以下代码将执行以下操作: 初始化一些结构 准备AIO(io_pre

  • JDK7已经release一段时间了,有个重要的新特性是AIO。今天趁闲暇,简单体验了下,简单分享如下: 2. 关于AIO的概念理解 关于AIO的概念,仅谈谈个人的一点理解。可能不到位,请大家指出。 Io的两个重要步骤:发起IO请求,和实际的IO操作。在unix网络编程的定义里异步和非异步概念的区别就是实际的IO操作是否阻塞。如果不是就是异步,如果是就是同步。 而阻塞和非阻塞的区别在于发起IO请求

  • 由来 在JDK7+后,提供了异步Socket库——AIO,Hutool对其进行了简单的封装。 使用 服务端 AioServer aioServer = new AioServer(8899); aioServer.setIoAction(new SimpleIoAction() { @Override public void accept(AioSession session)

  • (1)同步阻塞BIO 一个连接一个线程。 JDK1.4之前,建立网络连接的时候采用BIO模式,先在启动服务端socket,然后启动客户端socket,对服务端通信,客户端发送请求后,先判断服务端是否有线程响应,如果没有则会一直等待或者遭到拒绝请求,如果有的话会等待请求结束后才继续执行。 (2)同步非阻塞NIO NIO主要是想解决BIO的大并发问题,BIO是每一个请求分配一个线程,当请求过多时,每个