用一個比喻來解釋對 同步 異步 阻塞 非阻塞 輪詢 回調 的理解

大二時看《Thinking in java》裏NIO時這幾個概念就很含混,如今大四快畢業了,看《tomcat權威指南》時又得遇到這些概念,此次決定弄懂它。java

若是直接從網上扒它們的定義,那我寫這個博客就啥意義都沒有了,還不如寫一堆連接呢!並且用專門的定義解釋對於不少人而言就是用術語解釋術語,那他們就得繼續谷歌不懂的名詞了。因此我以爲仍是用孟子的思想:用魚和熊掌比喻一下生和義吧tomcat


打個比方,我在網上買了個東西,而後就等東西送到郵局去取了。就有這4種狀況:異步

  1. 你馬上傻站在郵局門口等東西來同步

  2. 你繼續作你要作的事,不會由於會有包裹影響正常生活該作的博客

  3. 東西郵到給你發短信程序

  4. 東西郵到沒人吭聲通知你
    生活


  1. 就是阻塞啦(由於會有包裹,你就專門等包裹來,包裹不到你就在郵局門口罷工!絕食!),
    時間

  2. 就是非阻塞啦(不會由於有包裹你就影響你正常生活和該作的工做)大神

  3. 就是異步啦(人家很敬業的通知你)術語

  4. 就是同步啦(暴走大世界裏黑ems郵件堆成山卻不通知人取就是這種狀況啦)


而後排列組合,又有了這四種狀況:

1.同步阻塞:包裹來了不通知你,你就傻站在郵局門口等包裹來了

2.同步非阻塞(輪詢):你該幹啥幹啥,雖然人家不通知你,但你時不時的跑去郵局問問我包裹到了沒.至於你是天天中午問呢仍是每隔一小時就跑去問一次,那就看你有多能墨跡了

3.異步阻塞:雖然倫家會短信通知你,但你偏要在郵局門口傻站着等包裹到.有時間,就是這麼任性!但我估計程序猿應該沒誰會寫出這麼任性的代碼吧?

4.異步非阻塞(回調):其實第一次據說要在郵局外面等郵件我是拒絕的,由於,你不能讓我擱下全部工做,我就立刻去郵局外面等郵件……等了一陣時間,手機,DUANG~~DUANG~~DUANG~~個人郵件到郵局裏了


總之,異步都是用在非阻塞上,由於我還沒見過誰寫異步阻塞的程序,若是你狠任性,那就試着寫個異步阻塞的程序感覺一下吧!


其實我閒扯淡就是爲了加深對這些術語概念的理解,可能解釋的有漏洞,還望諸大神指正

相關文章
相關標籤/搜索