泡一杯茶,學一學同異步

Java 多線程系列文章第 2 篇編程

接下來幾篇會給你們屢清楚多線程中涉及到的一些概念,理解了這些概念,日後的文章纔好明白。設計模式

今天給你們講講同步異步這兄弟倆。多線程

同步 & 異步

經過我們現實中的一個場景來描述這 2 個乾巴巴的詞。你們身邊不知道有木有朋友是潮汕的?潮汕地區每家每戶都有功夫茶,只要來客人,必定會用功夫茶來招待。功夫茶關鍵在於功夫兩字,功夫指的是泡茶方式比較講究,它不像咱上班時用保溫瓶泡茶,而是有一道泡茶的流程和工具。下面在網上找到的功夫茶口訣(做爲潮汕人這麼久,都不知道有這口訣,是聽我女友說有這個口訣才知道。。。)異步

潮汕功夫茶沖泡口訣:工具

  1. 白鶴沐浴(洗杯):用開水洗淨茶杯並提升茶具溫度。
  2. 觀音入宮(落茶):把鐵觀音茶放入茶具,放茶量約佔茶具容量的五分。
  3. 懸壺高衝(沖茶):把滾開的水提升衝入茶壺或蓋甌,使茶葉轉動。
  4. 春風拂面(刮泡沫):用壺蓋或甌蓋輕輕颳去漂浮的白泡沫,使其清新潔淨。
  5. 關公巡城(倒茶):把泡1、二分鐘後的茶水依次巡迴注入並列的茶杯裏。
  6. 韓信點兵(點茶):茶水倒到少量時要一點一點均勻地滴到各杯中,使其濃淡均勻。
  7. 鑑嘗湯色(看茶):觀賞杯中茶水的顏色,聞茶之香氣。
  8. 品啜甘霖(喝茶):乘熱細綴,先嗅其香,後嘗其味,邊啜邊嗅,淺斟細飲。飲量雖很少,但能齒頰留香,喉底回甘,心曠神怡,別有情趣。

有客人來的時候,咱們會先煮水,沒等到水煮沸就先洗茶杯,落茶,等到水煮沸了,再衝茶,倒茶。這個過程當中,有些步驟是同步的,好比洗茶杯和落茶,確定要把茶杯先洗乾淨後再落茶,一我的無法同時幹這 2 件事,咱們關注點放在煮水這個過程,是先煮水,煮水須要比較長的時間,煮水的過程當中把茶杯洗了,還有落茶,這個過程其實就是異步,異步指沒有乾等待水煮沸,在煮水的過程作其餘事情(洗茶杯、落茶),這就像是發送了一個消息,通知說要煮水,而後就繼續本身該幹嗎幹嗎,異步的過程徹底不影響當前作的其餘事。下圖反映了煮水步驟是異步的這個過程。線程

若是主人用下面方式來泡茶,不是新手就是不歡迎你(開玩笑,有多是主人一見如故,想趁着煮水和你嘮家常)。上面講了異步泡茶的方式,下面講同步泡茶是啥回事。看下圖,把煮水這個過程放在了時間線下方,也就是在煮水的時候乾等着水煮沸,不作其餘的事情,這就是同步,很明顯,最後整個泡茶的過程耗時比異步的長。設計

總結

這裏在簡單總結一下(若有錯誤請你們幫忙糾正):3d

同步(Synchronous):特指在同一個線程裏面執行的內容之間的關係是有順序的;線程之間須要同步時,就須要使用一些顯式的同步方式,這也是多線程帶來的大問題,在多線程編程須要特別關注。code

異步(Asynchronous):特指一些執行內容能夠不用直接等待運行結果,異步執行的內容通常是在另外一個線程運行,只須要運行完結果反饋回來就行。cdn

推薦閱讀

進程知多少?

設計模式看了又忘,忘了又看?

後臺回覆『設計模式』能夠獲取《一故事一設計模式》電子書

以爲文章有用幫忙轉發&點贊,多謝朋友們!

LieBrother
相關文章
相關標籤/搜索