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