开发者社区> 问答> 正文

JAVA中异步 IO 模型如何理解?

JAVA中异步 IO 模型如何理解?

展开
收起
vncamyi27xznk 2021-11-16 21:37:45 655 0
1 条回答
写回答
取消 提交回答
  • 异步 IO 模型是比较理想的 IO 模型,在异步 IO 模型中,当用户线程发起 read 操作之后 , 立 刻 就 可 以 开 始 去 做 其 它 的 事 。 而 另 一 方 面 , 从 内 核 的 角 度 , 当 它 受 到 一 个 asynchronous read 之后,它会立刻返回,说明 read 请求已经成功发起了,因此不会对用户线程产生任何 block。然后,内核会等待数据准备完成,然后将数据拷贝到用户线程,当这一切都完成之后,内核会给用户线程发送一个信号,告诉它 read 操作完成了。也就说用户线程完全不需要实际的整个 IO 操作是如何进行的,只需要先发起一个请求,当接收内核返回的成功信号时表示 IO 操作已经完成,可以直接去使用数据了。 也就说在异步 IO 模型中,IO 操作的两个阶段都不会阻塞用户线程,这两个阶段都是由内核自动完成,然后发送一个信号告知用户线程操作已完成。用户线程中不需要再次调用 IO 函数进行具体的读写。这点是和信号驱动模型有所不同的,在信号驱动模型中,当用户线程接收到信号表示数据已经就绪,然后需要用户线程调用 IO 函数进行实际的读写操作;而在异步 IO 模型中,收到信号表示 IO 操作已经完成,不需要再在用户线程中调用 iO 函数进行实际的读写操作。资料来源:《Java工程师成神之路(基础篇)》,链接:https://developer.aliyun.com/topic/download?id=923

    2021-11-17 14:23:06
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
从《阿里巴巴Java开发手册》编写推广谈技术成长 立即下载
如何通过 Serverless 提高 Java 微服务治理效 立即下载
多IO线程优化版 立即下载