NIO基础之同步、异步、阻塞、非阻塞

这里区分几个概念,也是常见可是容易混淆的概念,就是标题中的同步、异步、阻塞、非阻塞。异步

1、同步与异步

同步与异步,关心的是消息通讯的机制。也就是调用者和被调用者之间,消息是如何进行通知的。若是是调用者主动等待调用的结果,那么就是同步若是是被调用者主动去通知调用者,就是异步。
从上面的描述中,咱们能够看到。同步仍是异步,主要是看的消息通知的方式,一个是调用者主动等待,一个是调用者被通知。线程

2、阻塞与非阻塞

一样的,对于这样两个概念,咱们细细思考下,并不难理解。这两个概念都是针对于调用者来讲的,若是调用者在等待调用结果时,不能作其余的事情,就是阻塞;不然就是非阻塞。也就是看调用过程当中,调用者线程的状态,调用线程被挂起,没法进行其余的操做,就是阻塞;若是不被挂起,还能继续其余的操做,就是非阻塞。code

3、组合

针对以上四个名词,咱们进行组合,能够获得另外四个名词:同步阻塞、异步阻塞、同步非阻塞、异步非阻塞。这几个名词咱们常常能够见到,可是理解一下也不难。咱们举个例子来看看。
好比,咱们要用迅雷下载一个文件,这个文件很大,大概要下载1个小时。
若是在下载过程当中,咱们什么事也不作,就坐在电脑前,盯着迅雷等着下完,这个过程就是同步阻塞。
若是在下载过程当中,咱们也是坐在电脑前什么也不作,可是迅雷下载完成会经过音乐来通知咱们下完了,这样就是异步阻塞。
若是在下载过程当中,咱们不在电脑边上,能够去看书,玩耍,可是要时不时的去电脑前看看有没有下载完,这个过程就是同步非阻塞。
若是在下载过程当中,咱们不在电脑边上,也不用去电脑上看着,并且在下载完成后,迅雷放了一段音乐来提醒咱们已经下载完成,这个过程就是异步非阻塞。同步

欢迎你们关注个人公众号,有各类一线分享。下载

qrcode_for_gh_2e415bdf9b4e_258.jpg

相关文章
相关标签/搜索