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雙向讀寫資料...