NIO基礎之同步、異步、阻塞、非阻塞


這里區分幾個概念,也是常見但是容易混淆的概念,就是標題中的同步、異步、阻塞、非阻塞。

一、同步與異步

同步與異步,關心的是消息通信的機制。也就是調用者和被調用者之間,消息是如何進行通知的。如果是調用者主動等待調用的結果,那么就是同步如果是被調用者主動去通知調用者,就是異步。
從上面的描述中,我們可以看到。同步還是異步,主要是看的消息通知的方式,一個是調用者主動等待,一個是調用者被通知。

二、阻塞與非阻塞

同樣的,對於這樣兩個概念,我們細細思考下,並不難理解。這兩個概念都是針對於調用者來說的,如果調用者在等待調用結果時,不能做其他的事情,就是阻塞;否則就是非阻塞。也就是看調用過程中,調用者線程的狀態,調用線程被掛起,無法進行其他的操作,就是阻塞;如果不被掛起,還能繼續其他的操作,就是非阻塞。

三、組合

針對以上四個名詞,我們進行組合,可以得到另外四個名詞:同步阻塞、異步阻塞、同步非阻塞、異步非阻塞。這幾個名詞我們經常可以見到,但是理解一下也不難。我們舉個例子來看看。
比如,我們要用迅雷下載一個文件,這個文件很大,大概要下載1個小時。
如果在下載過程中,我們什么事也不做,就坐在電腦前,盯着迅雷等着下完,這個過程就是同步阻塞。
如果在下載過程中,我們也是坐在電腦前什么也不做,但是迅雷下載完成會通過音樂來通知我們下完了,這樣就是異步阻塞。
如果在下載過程中,我們不在電腦邊上,可以去看書,玩耍,但是要時不時的去電腦前看看有沒有下載完,這個過程就是同步非阻塞。
如果在下載過程中,我們不在電腦邊上,也不用去電腦上看着,而且在下載完成后,迅雷放了一段音樂來提醒我們已經下載完成,這個過程就是異步非阻塞。

歡迎大家關注我的公眾號,有各種一線分享。

qrcode_for_gh_2e415bdf9b4e_258.jpg


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM