阻塞IO与非阻塞IO(NIO)
生活随笔
收集整理的這篇文章主要介紹了
阻塞IO与非阻塞IO(NIO)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
什么是IO?
IO是輸入input和輸出output的首字母的縮寫形式,直觀意思是計算機輸入輸出,它描述的是計算機的數據流動的過程,因此IO第一大特征是有數據的流動;另外,對于一次IO,它究竟是輸入還是輸出,是針對于不同的主體而言的,不同的主體有不同的描述,例如,甲乙兩人交談,甲將大腦中的想法通過聲帶震動,繼而通過聲波傳入乙的耳朵,乙通過耳膜的震動再由神經將信號解析到大腦,這個數據流動的過程對于甲而言是輸出,對乙而言是輸入。
阻塞IO是指調用結果返回之前,當前線程會被掛起。調用線程只有在的到結果之后才會返回。
非阻塞IO是指在不能立刻得到結果之前,該調用不會阻塞當前線程。
舉個例子:
?你去商場買衣服,喜歡的衣服沒有你想要的顏色了。
如果是阻塞式調用的做法,你只能在店里等著店員去調貨,直到店員給你拿回來你想要的衣服,才去干別的事情。
如果是非阻塞式調用的做法,你可以在店員調貨期間去做別的事情,時不時詢問一下店員有沒有把衣服拿回來就好,不需要一直等待。
進一步理解:?
老張燒開水。
水壺,水開了自己會響的水壺(簡稱響水壺)。
1.老張把水壺放在火上,等水開。(同步阻塞)
2.老張把水壺放在火上,去客廳看電視,時不時來看一眼水是否燒開。(同步非阻塞)
3.老張把響水壺放在火上,等水開。(異步阻塞)
4.老張把響水壺放在火上,去客廳看電視,直到水壺響的時候才去拿水壺。(異步非阻塞)
- 所謂同步異步,只是對于水壺而言,普通水壺,同步;響水壺,異步。雖然都可以燒水,但響水壺可以在完工之后,提示老張水開了。這是普通水壺不具有的功能。同步只能讓調用者去輪詢自己(情況2),造成效率的低下。
- 所謂阻塞非阻塞,只是對于老張而言,等待的老張,阻塞;看電視的老張,非阻塞。情況1和情況3中的老張就是阻塞的,別人喊他都不知道,雖然3中響水壺是異步的,可是對于等待中的老張沒有太大的意義。所以一般異步是配合非阻塞使用的,這樣才能發揮異步的效用。
總結
以上是生活随笔為你收集整理的阻塞IO与非阻塞IO(NIO)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: POS打印机控制命令说明
- 下一篇: navicat数据库密码忘记如何解决