跟我学系列之趣解NIO和IO的区别

在上一次分享中,咱们谈到了阻塞与非阻塞,同步与异步的区别,

那么在这一次分享中,咱们主要是以讲故事的方式讲述一下NIO和IO的区别。那么在下一次分享中,将进行Java NIO源码的分析。

故事的背景:

有一个动物园,动物园里面有狮子,老虎,猴子等动物,他们每天定期来吃不同的水果,而这些水果要由动物园管理员到货场领取分配。

一、IO

我们知道,在使用IO的时候往往可以在服务器端使用多线程或者线程池来处理并发请求,这也叫伪异步,那么故事开始了:

在货场里有五个动物园管理员等待水果货车的到来,他们一直在等待,如果货车不来他们也要死等,直到货车的到来,这时候货车来了,每个管理员都领了一份水果去寻找动物,管理员A来到狮子旁边,给狮子一份苹果,狮子开始吃,中途吃累了,休息了一会儿继续吃,这时候管理员A就一直等着狮子吃完,再回去拿水果去另一个动物那里。五个管理员都是这样做的。

二、NIO

Java NIO是在jdk1.4开始使用的,它既可以说成“新IO”,也可以说成非阻塞式I/O。下面是java NIO的工作原理:

由一个专门的线程来处理所有的IO事件,并负责分发。

事件驱动机制:事件到的时候触发,而不是同步的去监视事件。

线程通讯:线程之间通过wait,notify等方式通讯。保证每次上下文切换都是有意义的。减少无谓的线程切换。

那么故事开始了:动物园里,有一个管理员他先去了解动物们都喜欢吃什么样的水果并做了一个登记,然后去货场看一看货车有没有到来,如果没有来他就回去继续干别的事,就这样每隔一段时间就去货场看一下。这时候货车来了,他叫来另外五个管理员并告诉管理员哪些动物喜欢吃哪些水果,管理员们分类取不同的水果,然后各自去找动物们分发水果,还是管理员A,来到狮子旁边把它喜欢吃的苹果给它吃,狮子吃的比较慢,这时候管理员A说,你先吃着,我给其他动物送水果,我一会儿再来取水果盘子,这时候管理员A回去取来香蕉继续猴子送去,在猴子吃香蕉累了休息的时候,管理员A来找狮子拿回水果盘子,再去找猴子拿回水果盘子。

不知道大家在看完这二个小故事之后有没有理解NIO和IO,那么在下次分享的时候,咱们将正式进入NIO原理及源码的分享,谢谢大家。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏blackheart的专栏

[解读REST] 2.REST用来干什么的?

衔接上文[解读REST] 1.REST的起源,介绍了REST的诞生背景。每当笔者遇到一个新事物的想去了解的时候,总是会问上自己第一个问题,这个新事物是干什么用的...

2176
来自专栏FreeBuf

车真的那么容易偷吗?汽车无线钥匙通信安全的一点科普

不久前在HackPWN的启动仪式上,安全人员仅用2分钟就通过无线钥匙破解了一辆奔驰汽车,看起来黑客要偷走一辆汽车很容易。真的这么简单吗?作为无线安全研究者,在这...

3075
来自专栏云鼎实验室的专栏

【黑客浅析】像黑客一样思考

用句带有点哲学的话,成为黑客,只有成为黑客,像黑客一样思考,你才能知道从哪去防御黑客;很俗的一句话,但很实在!

1.8K10
来自专栏软件

Java程序员高效开发必备5大工具,你用过几个?

学习问题欢迎留言或对话框咨询 ▼ 工具用的好,效率不用愁!别看平时一些人开发进度飞快,好像很厉害的样子,也许他只是比你多学了几个工具,才在弯道超了你的车。开发要...

2609
来自专栏程序工场

「 工具 」安全稳定的百度云不限速工具

经常听到大家抱怨百度网盘坑爹,必须要开通会员才可以高速下载,否则那个速度是真的慢啊,说真的,小编也受不了默认的速度,所以索性开了会员,有的读者感觉一个月30元不...

1392
来自专栏全栈架构

别了 Java EE,开源组织将其更名为 Jakarta EE

2017年8月,Oracle(甲骨文)决定将Java EE(Java Enterprise Edition)移交给开源组织,最后Eclipse基金会接手。

642
来自专栏一个会写诗的程序员的博客

十分钟Spring Boot Kotlin快速开发爬虫:微技: 一个汇聚各大知名技术博客网站(ImportNew, OSChina, CNBlog, ITEye, SegmentFault, I...

还在奔忙于(ImportNew, OSChina, CNBlog, ITEye, SegmentFault, InfoQ )等等各大技术站点寻找技术文章吗?

1211
来自专栏NComputing

桌面虚拟化终端方案提高企业办公软件源代码的安全性

软件开发型的公司,主要的资源就是开发工程师的源代码,而如何提高设计的源代码,而如何提高设计的源代码的安全是很多研发公司考虑的重点问题之一。而现在我...

2305
来自专栏DevOps时代的专栏

X 战警降临,Jenkins X 正式发布

重磅消息,Jenkins X 已经正式发布啦!(文末有福利) Jenkins X is a CI / CD platform for Kubernetes 早...

8265
来自专栏知晓程序

【晓头条】马化腾亲自为小程序站台 / 大量美妆号被要求改名 / 微信更新隐私指引,不同意不能用

此外,大量美妆公众号因名称涉及注册商标,被集中要求改名;微信最近也更新了隐私指引,如果不同意新的隐私指引,将无法继续使用微信。

1283

扫码关注云+社区

领取腾讯云代金券