詳解java版本迭代中的 BIO NIO和AIO

2021-07-06 10:54:50 字數 650 閱讀 5290

bio(blocking io )-阻塞式

一般為同步並阻塞,伺服器實現模式為乙個連線乙個執行緒,即客戶端有連線請求時伺服器端就需要啟動乙個執行緒進行處理,如果這個連線不做任何事情會造成不必要的執行緒開銷,當然可以通過執行緒池機制改善

nio(non-blocking io)-非阻塞

一般為同步非阻塞:伺服器實現模式為乙個請求乙個執行緒,即客戶端傳送的連線請求都會註冊到多路復用器上,多路復用器輪詢到連線有i/o請求時才啟動乙個執行緒進行處理。使用者程序也需要時不時的詢問io操作是否就緒,這就要求使用者程序不停的去詢問。

aio(asynchronous io)-非同步非阻塞

在此種模式下,使用者程序只需要發起乙個io操作然後立即返回,等io操作真正的完成以後,應用程式會得到io操作完成的通知,此時使用者程序只需要對資料進行處理就好了,不需要進行實際的io讀寫操作,因為真正的io讀取或者寫入操作已經由核心完成了

(補充:其實阻塞與非阻塞都可以理解為同步範疇下才有的概念,對於非同步,就不會再去分阻塞非阻塞。對於使用者程序,接到非同步通知後,就直接操作程序使用者態空間裡的資料好了)
接下來就說說他們與reactor、proactor的關係

lk中的bio機制 2

bio中除了可以使用真實的block dev,還可以使用memory中的block dev,這樣每次可以讀寫block count 的資料,加快讀寫的速度。int create membdev const char name,void ptr,size t len create membdev會建立...

Java中的 Iterator 迭代器

迭代器是一種設計模式,它是乙個物件,可以遍歷並選擇序列中的物件,而開發人員不需要了解該序列的底層結構 1.iterator 介面中定義的幾個常用方法 hasnext 檢查序列中是否還有元素remove 將迭代器返新返回的元素刪除 2.使用 iterator 迭代器遍歷集合中的元素 public st...

Java中LinkedList的迭代器

類似於arraylist的迭代器,linkedlist的迭代器採用三個成員變數 lastreturned,next,nextindex.所有的操作都是在lastreturned指向的節點上進行操作,next指向下乙個節點。不論是通過有參還是無參的建構函式獲得容器的迭代器,初始情況下lastretur...