更新時間:2020-05-07 14:50:51 來源:動力節點 瀏覽2703次
以BIO形式的文件讀取和復制:
NIO讀取過程:
NIO形式的讀取和復制
阻塞IO和非阻塞IO這兩個概念是程序級別的。主要描述的是程序請求操作系統IO操作后,如果IO資源沒有準備好,那么程序該如何處理的問題:前者等待;后者繼續執行(并且使用線程一直輪詢,直到有IO資源準備好了)。
同步IO和異步 IO,這兩個概念是操作系統級別的。主要描述的是操作系統在收到程序請求IO操作后,如果IO資源沒有準備好,該如何響應程序的問題:前者不響應,直到IO資源準備好以后;后者返回一個標記(好讓程序和自己知道以后的數據往哪里通知),當IO資源準備好以后,再用事件機制返回給程序。
同步阻塞IO(JAVABIO):
服務器實現模式為一個連接一個線程,每當客戶端有連接請求時服務器端就需要啟動一個線程進行處理。而且服務器需要一直處于等待狀態,一直在 accept();。如果這個連接不做任何事會造成不必要的開銷。
同步非阻塞IO(JavaNIO):
服務器實現模式為一個請求一個線程,即客戶端發送的連接請求都會注冊到多路復用器上,多路復用器輪詢到連接有I/O請求時才啟動一個線程進行處理。用戶進程也需要時不時的詢問IO操作是否就緒,這就要求用戶進程不停的去詢問。
異步阻塞IO(JavaNIO):
此種方式下是指應用發起一個IO操作以后,不等待內核IO操作的完成,等內核完成IO操作以后會通知應用程序,這其實就是同步和異步最關鍵的區別,同步必須等待或者主動的去詢問IO是否完成。(比如你買了一份快遞,你不需要一天二十四小時去關注快遞的狀態,而是當快遞到了或丟了等特殊情況下會通知你。)
阻塞是因為此時是通過select系統調用來完成的,而select函數本身的實現方式是阻塞的,而采用select函數有個好處就是它可以同時監聽多個文件句柄從而提高系統的并發性!
還有更強的異步非阻塞(AIO)。
以上就是動力節點java培訓機構的小編針對“編程基礎學習,用Java io流讀取文件”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習