關於java I/O中flush方法作用的理解

今天在練習使用Serializable過程中,碰到java I/O中的flush()方法,有些不理解。

以前沒有用過這個函數,於是就查了一下,但是還是理解的不透徹,後來在論壇上看到一個吧友這樣舉例說明,瞬間就懂了 !哈哈,這個例子吧,雖然有些不雅,但是夠通俗夠精準!記下來與大家分享:

下面是哪位吧友的原話:

flush本意是沖刷,這個方法大概取自它引申義衝馬桶的意思,馬桶有個池子,你往裏面扔東西,會暫時保存在池子裏,只有你放水衝下去,東西纔會進入下水道。

同理很多流都有一個這樣的池子,專業術語叫緩衝區,當你print或者write的時候,會暫時保存在緩衝區,並沒有發送出去,這是出於效率考慮的,因爲數據不會自己發送過去,必須有其他機制,而且這個很消耗資源,就像馬桶你需要很多水,才能沖走,你如果扔一點東西,就衝一次水,那你水費要爆表了,同樣如果你寫一行文字,或者一個字節,就要馬上發送出去,那網絡流量,CPU使用率等等都要爆表了,所以一般只有在你真正需要發送否則無法繼續的時候,調用flush,將數據發送出去。 
發佈了14 篇原創文章 · 獲贊 23 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章