标签:
大二时看《Thinking in java》里NIO时这几个概念就很含混,现在大四快毕业了,看《tomcat权威指南》时又得遇到这些概念,这次决定弄懂它。
如果直接从网上扒它们的定义,那我写这个博客就啥意义都没有了,还不如写一堆链接呢!而且用专门的定义解释对于很多人而言就是用术语解释术语,那他们就得继续谷歌不懂的名词了。所以我觉得还是用孟子的思想:用鱼和熊掌比喻一下生和义吧
打个比方,我在网上买了个东西,然后就等东西送到邮局去取了。就有这4种情况:
你立刻傻站在邮局门口等东西来
你继续做你要做的事,不会因为会有包裹影响正常生活该做的
东西邮到给你发短信
东西邮到没人吭声通知你
就是阻塞啦(因为会有包裹,你就专门等包裹来,包裹不到你就在邮局门口罢工!绝食!),
就是非阻塞啦(不会因为有包裹你就影响你正常生活和该做的工作)
就是异步啦(人家很敬业的通知你)
就是同步啦(暴走大世界里黑ems邮件堆成山却不通知人取就是这种情况啦)
然后排列组合,又有了这四种情况:
1.同步阻塞:包裹来了不通知你,你就傻站在邮局门口等包裹来了
2.同步非阻塞(轮询):你该干啥干啥,虽然人家不通知你,但你时不时的跑去邮局问问我包裹到了没.至于你是每天中午问呢还是每隔一小时就跑去问一次,那就看你有多能墨迹了
3.异步阻塞:虽然伦家会短信通知你,但你偏要在邮局门口傻站着等包裹到.有时间,就是这么任性!但我估计程序猿应该没谁会写出这么任性的代码吧?
4.异步非阻塞(回调):其实第一次听说要在邮局外面等邮件我是拒绝的,因为,你不能让我搁下所有工作,我就马上去邮局外面等邮件……等了一阵时间,手机,DUANG~~DUANG~~DUANG~~我的邮件到邮局里了
总之,异步都是用在非阻塞上,因为我还没见过谁写异步阻塞的程序,如果你狠任性,那就试着写个异步阻塞的程序感受一下吧!
其实我闲扯淡就是为了加深对这些术语概念的理解,可能解释的有漏洞,还望诸大神指正
用一个比喻来解释对 同步 异步 阻塞 非阻塞 轮询 回调 的理解
标签:
原文地址:http://my.oschina.net/tdONEmadao/blog/396288