1. 程式人生 > >BIO與NIO區別

BIO與NIO區別

IO

網路IO、本地IO
網路間的資料傳輸,稱為網路IO
本地磁碟間的資料傳輸,稱為本地IO

BIO

Blocking IO
阻塞IO

實現原理

伺服器,當每一個請求進來
要接收傳來的資料,都會開啟一個Socket
開啟一個執行緒,來處理資料
讀取Socket傳遞的資料
獲取到InputStream,讀取資料
進行業務邏輯操作,操作完成之後
返回結果

伺服器會收到很多的請求,同時在伺服器操作
在業務邏輯沒有完成之前,執行緒都無法得到釋放

此時,伺服器無法處理大量的請求
因為,有大量的執行緒處於阻塞狀態
等待業務邏輯的處理完成
這裡寫圖片描述

NIO

Non-Blocking IO
非阻塞IO

Channel,通道
Buffer,進行資料傳輸
Selector,選擇器,也稱為多路複用器

實現原理

每一個請求過來,都會建立一個通道
一個selector,可以註冊很多的channel

通過,一個Selector監聽多個通道的方式
當某一個通道的任何一個狀態,準備就緒
就會額外的開啟一個執行緒,進行執行
多路複用模型

通道狀態

或者稱為,通道的事件

Connect,連線成功準備就緒
Accept,接收資料準備就緒
Read,讀取資料準備就緒
Write,寫入資料準備就緒
這裡寫圖片描述