首页 存档 技术 查看内容

JavaNIO:浅析I/O模型

2018-3-30 13:00 |来自: 互联网 285 0

摘要: (点击上方蓝字,可快速关注我们) 来源:海子 链接:http://www.cnblogs.com/dolphin0520/p/3916526.html 也许很多朋友在学习NIO的时候都会感觉有点吃力,对里面的很多概念都感觉不是那么明朗。在进入Java NIO编 ...

(点击上方蓝字,可快速关注我们)

来源:海子

链接:http://www.cnblogs.com/dolphin0520/p/3916526.html


也许很多朋友在学习NIO的时候都会感觉有点吃力,对里面的很多概念都感觉不是那么明朗。在进入Java NIO编程之前,我们今天先来讨论一些比较基础的知识:I/O模型。下面本文先从同步和异步的概念 说起,然后接着阐述了阻塞和非阻塞的区别,接着介绍了阻塞IO和非阻塞IO的区别,然后介绍了同步IO和异步IO的区别,接下来介绍了5种IO模型,最后介绍了两种和高性能IO设计相关的设计模式(Reactor和Proactor)。


  以下是本文的目录大纲:


一.什么是同步?什么是异步?


二.什么是阻塞?什么是非阻塞?


三.什么是阻塞IO?什么是非阻塞IO?


四.什么是同步IO?什么是异步IO?


五.五种IO模型


六.两种高性能IO设计模式


若有不正之处,请多多谅解并欢迎批评指正。


一.什么是同步?什么是异步?


同步和异步的概念出来已经很久了,网上有关同步和异步的说法也有很多。以下是我个人的理解:


同步就是:如果有多个任务或者事件要发生,这些任务或者事件必须逐个地进行,一个事件或者任务的执行会导致整个流程的暂时等待,这些事件没有办法并发地执行;


异步就是:如果有多个任务或者事件发生,这些事件可以并发地执行,一个事件或者任务的执行不会导致整个流程的暂时等待。


这就是同步和异步。举个简单的例子,假如有一个任务包括两个子任务A和B,对于同步来说,当A在执行的过程中,B只有等待,直至A执行完毕,B才能执行;而对于异步就是A和B可以并发地执行,B不必等待A执行完毕之后再执行,这样就不会由于A的执行导致整个任务的暂时等待。


如果还不理解,可以先看下面这2段代码:

void fun1() {

本文转载自:微信公众账号 - ImportNew,版权归原作者所有!

声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

相关分类

返回顶部