編程基礎(chǔ)學(xué)習(xí),用Java io流讀取文件

編程基礎(chǔ)學(xué)習(xí),用Java io流讀取文件

長(zhǎng)沙中公優(yōu)就業(yè)      2022-05-04 15:07:01     54

編程基礎(chǔ)學(xué)習(xí),用Java io流讀取文件,以BIO形式的文件讀取和復(fù)制:NIO讀取過(guò)程:NIO形式的讀取和復(fù)制阻塞IO和非阻塞IO這兩個(gè)概念是程序級(jí)別的。主要描述的是程序請(qǐng)求

課程價(jià)格 請(qǐng)咨詢

上課時(shí)段: 授課校區(qū):

詳細(xì)介紹

   以BIO形式的文件讀取和復(fù)制:

    NIO讀取過(guò)程:

    NIO形式的讀取和復(fù)制

    阻塞IO和非阻塞IO這兩個(gè)概念是程序級(jí)別的。主要描述的是程序請(qǐng)求操作系統(tǒng)IO操作后,如果IO資源沒(méi)有準(zhǔn)備好,那么程序該如何處理的問(wèn)題:前者等待;后者繼續(xù)執(zhí)行(并且使用線程一直輪詢,直到有IO資源準(zhǔn)備好了)。

    同步IO和異步 IO,這兩個(gè)概念是操作系統(tǒng)級(jí)別的。主要描述的是操作系統(tǒng)在收到程序請(qǐng)求IO操作后,如果IO資源沒(méi)有準(zhǔn)備好,該如何響應(yīng)程序的問(wèn)題:前者不響應(yīng),直到IO資源準(zhǔn)備好以后;后者返回一個(gè)標(biāo)記(好讓程序和自己知道以后的數(shù)據(jù)往哪里通知),當(dāng)IO資源準(zhǔn)備好以后,再用事件機(jī)制返回給程序。

    同步阻塞IO(JAVABIO):

    服務(wù)器實(shí)現(xiàn)模式為一個(gè)連接一個(gè)線程,每當(dāng)客戶端有連接請(qǐng)求時(shí)服務(wù)器端就需要啟動(dòng)一個(gè)線程進(jìn)行處理。而且服務(wù)器需要一直處于等待狀態(tài),一直在 accept();。如果這個(gè)連接不做任何事會(huì)造成不必要的開銷。

    同步非阻塞IO(JavaNIO):

    服務(wù)器實(shí)現(xiàn)模式為一個(gè)請(qǐng)求一個(gè)線程,即客戶端發(fā)送的連接請(qǐng)求都會(huì)注冊(cè)到多路復(fù)用器上,多路復(fù)用器輪詢到連接有I/O請(qǐng)求時(shí)才啟動(dòng)一個(gè)線程進(jìn)行處理。用戶進(jìn)程也需要時(shí)不時(shí)的詢問(wèn)IO操作是否就緒,這就要求用戶進(jìn)程不停的去詢問(wèn)。

    異步阻塞IO(JavaNIO):

    此種方式下是指應(yīng)用發(fā)起一個(gè)IO操作以后,不等待內(nèi)核IO操作的完成,等內(nèi)核完成IO操作以后會(huì)通知應(yīng)用程序,這其實(shí)就是同步和異步最關(guān)鍵的區(qū)別,同步必須等待或者主動(dòng)的去詢問(wèn)IO是否完成。(比如你買了一份快遞,你不需要一天二十四小時(shí)去關(guān)注快遞的狀態(tài),而是當(dāng)快遞到了或丟了等特殊情況下會(huì)通知你。)

    阻塞是因?yàn)榇藭r(shí)是通過(guò)select系統(tǒng)調(diào)用來(lái)完成的,而select函數(shù)本身的實(shí)現(xiàn)方式是阻塞的,而采用select函數(shù)有個(gè)好處就是它可以同時(shí)監(jiān)聽多個(gè)文件句柄從而提高系統(tǒng)的并發(fā)性!

    還有更強(qiáng)的異步非阻塞(AIO)。

    以上就是長(zhǎng)沙中公優(yōu)就業(yè)java培訓(xùn)機(jī)構(gòu)的小編針對(duì)“編程基礎(chǔ)學(xué)習(xí),用Java io流讀取文件”的內(nèi)容進(jìn)行的回答,希望對(duì)大家有所幫助,如有疑問(wèn),請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。

培訓(xùn)啦提醒您:交易時(shí)請(qǐng)核實(shí)對(duì)方資質(zhì),對(duì)于過(guò)大宣傳或承諾需謹(jǐn)慎!任何要求預(yù)付定金、匯款等方式均存在風(fēng)險(xiǎn),謹(jǐn)防上當(dāng)。