BIO的簡單例項

2022-06-15 17:00:15 字數 816 閱讀 1271

bio是一種同步阻塞的連線方式 乙個連線乙個執行緒,即客戶端有連線請求時伺服器端就需要啟動乙個執行緒進行處理,如果這個連線不做任何事情會造成不必要的執行緒開銷

關於bio 有如下的簡單實現:

public class bioserver 

});}

}//編寫乙個方法 和客戶端通訊

public static void handler(socket socket)

else

}} catch (ioexception e)

finally catch (ioexception e) }}

}啟動時 會出現:

說明 阻塞在了這裡:while(true){

system.out.println("等待連線");

當連線到客戶端時:

連線到客戶端後 阻塞的執行緒開始執行  執行到

try {

system.out.println("id"+thread.currentthread().getid()+"名字"+thread.currentthread().getname());

system.out.println("read...");

又被阻塞

所以 bio同步並阻塞 如果連線不做任何事情會造成不必要的執行緒開銷

乙個簡單的BIO通訊程式

同步阻塞io 簡稱bio 是最傳統的一種io模型,即在讀和寫的過程中會發生阻塞現象。我們編寫乙個簡單的服務端和客戶端程式,尋找一下同步阻塞i o的弊端 timeserver public class timeserver catch exception e finally 服務端建立乙個server...

基於jdk序列化的 BIO簡單RPC框架

具體實現步驟 定義requesthandler類,實現了runnable介面,即乙個連線對應乙個執行緒 定義main方法,建立rpcserver物件和service物件,rpcserver.start 開啟服務 rpc client的實現 自定義的invocationhandler類 定義main方...

BIO和NIO的區別

bio 同步阻塞 每乙個io請求都會有乙個執行緒去處理,如果資料沒有準備就緒,執行緒會一直等待。直到資料讀取完畢執行緒才會釋放,在此期間,程序不回去做任何其他任務,這種模式會浪費一定的執行緒資源。nio 同步非阻塞 nio的優點在於首先基於快取讀寫檔案,能夠批量操作,然後用channel雙向讀寫資料...