Java核心學習 —— IO

整個Java IO體系都是基於字符流(InputStream/OutputStream) 和 字節流(Reader/Writer)做爲基類,根據不一樣的數據載體或功能派生出來的。異步

1、同步、異步、阻塞、非阻塞

1.1 同步與異步

同步和異步關注的是通信方式。ide

同步:須要等全部操做完成後,返回結果。
異步:不須要等全部操做完成,返回結果。文檔

1.2 阻塞與非阻塞

阻塞與非阻塞關注的是等待狀態。get

1.3 例子

例子1:電水壺燒水同步

同步阻塞:水壺燒水,人要一直等在水壺旁邊,直到水燒開。
同步非阻塞:水壺燒水,人去作其餘事,時不時過來看看,水燒沒燒開,直到水燒開。
異步阻塞:水壺有燒水報警、自動斷電功能,人打開燒水開關後,仍是等在水壺旁邊,等水燒開(雖然不必)。
異步非阻塞:水壺有燒水報警、自動斷電功能,人打開燒水開關後,去幹其餘事,不用一直等水壺燒開。it

例子2:家電商場買電視電商

同步阻塞:買電視,坐在商場乾等着,等商家包裝電視,本身帶回去。
異步非阻塞:買電視,下訂單,下完電視訂單訂單,付完款,去幹其餘事,直到快遞上門送貨。數據

例子3:書店買書video

打電話給書店問有沒有《圍城》這本書。
同步:打電話給書店老闆,老闆說你等等,我查一下,而後一直等,直到老闆說有沒有。
異步:打電話給書店老闆,老闆說,等我查到了,打電話給你。
阻塞:上述的同步或異步過程,你也一直在等老闆的回答。
非阻塞:上述的同步或異步過程,你去幹其餘事。vi

參考文檔

同步、異步、阻塞、非阻塞

相關文章
相關標籤/搜索