Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

白话解说之 BIO、NIO、AIO、异步阻塞的区别 #3

Open
superleeyom opened this issue Oct 17, 2020 · 0 comments
Open

白话解说之 BIO、NIO、AIO、异步阻塞的区别 #3

superleeyom opened this issue Oct 17, 2020 · 0 comments
Assignees

Comments

@superleeyom
Copy link
Owner

superleeyom commented Oct 17, 2020

白话解说

首先明白这个几个简称的含义:

  • BIO(Blocking IO):同步阻塞
  • NIO(Non-Blocking IO):同步非阻塞
  • AIO(Asynchronous IO):异步非阻塞

BIO、NIO、异步阻塞、AIO 这四者之间有啥区别呢?那就拿生活的实例来解释一下:

  • BIO:我去上厕所,这个时候坑位都满了,我必须等待坑位释放了,我才能上吧?!此时我啥都不干,站在厕所里盯着,过了一会有人出来了,我就赶紧蹲上去。
  • NIO:我去上厕所,这个时候坑位都满了,没关系,哥不急,我出去抽根烟,过会回来看看有没有空位,如果有我就蹲,如果没有我出去接着抽烟或者玩会手机。
  • 异步阻塞:我去上厕所,这个时候坑位都满了,没事我等着,等有了新的空位,让他通知我就行,通知了我,我就蹲上去。
  • AIO:我去上厕所,这个时候坑位都满了,没事,我一点也不急,我去厕所外面抽根烟再玩玩手机,等有新的坑位释放了,会有人通知我的,通知我了,我就蹲上去。

从这个生活实例中能可以看得出来:

  • 同步就是我需要自己每隔一段时间,以轮训的方式去看看有没有空的坑位;
  • 异步则是有人拉完茅坑会通知你,通知你后,你再回去蹲;
  • 阻塞就是你在等待的过程中,你不去做任何的事情,就干等着;
  • 非阻塞就是你在等待的过程中,可以去做其他的事情,比如抽烟、玩手机等;

总结就是:异步的优势显而易见,大大优化用户体验, 非阻塞使得系统资源开销远远小于阻塞模式,因为系统不需要创建新的进程(或线程),大大地节省了系统资源。

专业解说

发现一篇解说的很清楚的文章:《常见的IO模型有哪些?Java中的BIO、NIO、AIO 有啥区别?》

@superleeyom superleeyom self-assigned this Oct 17, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant