“什么是IO的多路復用機制?”
這是一道年薪50W的面試題,很遺憾,99%的人都回答不出來,
大家好,我是Mic,一個作業了14年的Java程式員,
今天,給大家分享一道網路IO的面試題,
這道題目的文字回答已經整理到了15W字的面試檔案里面,大家可以S我領取,
下面看看高手的回答,
高手:
IO多路復用機制,核心思想是讓單個執行緒去監視多個連接,一旦某個連接就緒,也就是觸發了讀/寫事件,
就通知應用程式,去獲取這個就緒的連接進行讀寫操作,
也就是在應用程式里面可以使用單個執行緒同時處理多個客戶端連接,在對系統資源消耗較少的情況下提升服務端的鏈接處理數量,
在IO多路復用機制的實作原理中,客戶端請求到服務端后,此時客戶端在傳輸資料程序中,為了避免Server端在read客戶端資料程序中阻塞,服務端會把該請求注冊到Selector復路器上,服務端此時不需要等待,只需要啟動一個執行緒,通過selector.select()阻塞輪詢復路器上就緒的channel即可,也就是說,如果某個客戶端連接資料傳輸完成,那么select()方法會回傳就緒的channel,然后執行相關的處理就可以了,

常見的IO多路復用機制的實作方式有: select 、poll、epoll,
這些都是Linux系統提供的IO復用機制的實作,其中select和poll是基于輪詢的方式去獲取就緒連接,
而epoll是基于事件驅動的方式獲取就緒連接,從性能的角度來看,基于事件驅動的方式要優于輪詢的方式,
總結
IO多路復用機制,是非常重要的網路通信基礎,
在平時的業務開發中,使用比較少,但是在中間件里面作為基礎通信模型,是每個高級工程師必須要掌握的內容,
大家記得點贊、收藏加關注,
著作權宣告:本博客所有文章除特別宣告外,均采用 CC BY-NC-SA 4.0 許可協議,轉載請注明來自
Mic帶你學架構!
如果本篇文章對您有幫助,還請幫忙點個關注和贊,您的堅持是我不斷創作的動力,歡迎關注「跟著Mic學架構」公眾號公眾號獲取更多技術干貨!

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/501601.html
標籤:其他
