亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

淺析Java IO相關(guān)知識(shí)點(diǎn)

 更新時(shí)間:2018年05月26日 12:00:14   作者:meng劇場(chǎng)  
本篇文章給大家分享了關(guān)于java io的一些相關(guān)知識(shí)點(diǎn)以及相關(guān)內(nèi)容,對(duì)此有需要的朋友可以學(xué)習(xí)參考下。

最近面試問(wèn)的比較多的問(wèn)題就是IO這一塊了,有些也答出來(lái)了,有些答的不好,最近這段時(shí)間開(kāi)始深入了解一些這方面的東西,也想總結(jié)一下。

前置點(diǎn)

1,用戶空間系統(tǒng)空間

Linux系統(tǒng)會(huì)把一個(gè)進(jìn)程分為兩個(gè)空間,用戶空間和系統(tǒng)空間,比如我們正常的編碼,操作的都是用戶空間的,那如果我們需要調(diào)用系統(tǒng)功能,比如拷貝系統(tǒng)文件,這種就需要調(diào)用系統(tǒng)組件,獲取內(nèi)核服務(wù),完成操作

IO的兩個(gè)階段

IO的執(zhí)行過(guò)程中分為兩個(gè)階段,等待就緒,執(zhí)行拷貝

等待就緒:我們知道,我們執(zhí)行IO操作的時(shí)候,數(shù)據(jù)可能來(lái)自別的應(yīng)用程序或者網(wǎng)絡(luò),如果沒(méi)有數(shù)據(jù),操作系統(tǒng)是會(huì)一直等待的,此時(shí),應(yīng)用程序可能也會(huì)一直等待
執(zhí)行拷貝:將數(shù)據(jù)拷貝到應(yīng)用程序工作區(qū)

阻塞與非阻塞,同步與異步

先說(shuō)同步與非同步,最簡(jiǎn)單就是看是否啟動(dòng)一個(gè)線程或者進(jìn)程來(lái)完成IO這件事情,同步IO的時(shí)候,系統(tǒng)會(huì)停下來(lái)等這個(gè)做完才能做別的事情,而異步IO就利用多線程的方式,啟動(dòng)一個(gè)新的線程去做這件事情,而自己就可以去干別的事情等待通知

再說(shuō)阻塞與非阻塞吧,這兩個(gè)其實(shí)關(guān)注的是程序在等待調(diào)用結(jié)果的時(shí)候的狀態(tài),阻塞是指,你在獲取這個(gè)結(jié)果的時(shí)候,你會(huì)一直掛起,直到等到完整結(jié)果之后你才會(huì)繼續(xù)執(zhí)行,非阻塞是指,在該進(jìn)程不能獲取結(jié)果的時(shí)候,沒(méi)有阻塞線程,這個(gè)有點(diǎn)繞,有一個(gè)通俗的解釋,如果是阻塞的,我要獲取這個(gè)東西,獲取過(guò)程中,我就失去了CPU,等到結(jié)果之后我才會(huì)獲取CPU,但是如果我是非阻塞,我就繼續(xù)持有CPU,我還可以一直檢查

幾種IO模型

目前比較多的就是5種

阻塞IO

最傳統(tǒng)的一種IO,即讀寫(xiě)會(huì)發(fā)生阻塞現(xiàn)象的

非阻塞IO

用戶發(fā)起read的時(shí)候,并不會(huì)失去CPU,會(huì)一直check,如果沒(méi)有成功,會(huì)返回一個(gè)error,如果收到成功信號(hào),就會(huì)發(fā)起read操作,獲取完整結(jié)果

多路復(fù)用IO

這個(gè)就是Java NIO的核心了,會(huì)有一個(gè)線程管理多個(gè)socket的狀態(tài),檢查是否有準(zhǔn)備好的,只有發(fā)現(xiàn)真正準(zhǔn)備好,才會(huì)調(diào)用cpu執(zhí)行IO操作,這塊是比較重要的

信號(hào)驅(qū)動(dòng)IO

用的少,忽略

異步IO

起一個(gè)線程去執(zhí)行吧

相關(guān)文章

  • Springboot項(xiàng)目出現(xiàn)java.lang.ArrayStoreException的異常分析

    Springboot項(xiàng)目出現(xiàn)java.lang.ArrayStoreException的異常分析

    這篇文章介紹了Springboot項(xiàng)目出現(xiàn)java.lang.ArrayStoreException的異常分析,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-12-12
  • java 多線程交通信號(hào)燈模擬過(guò)程詳解

    java 多線程交通信號(hào)燈模擬過(guò)程詳解

    這篇文章主要介紹了java 多線程交通信號(hào)燈模擬過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • 阿里、華為、騰訊Java技術(shù)面試題精選

    阿里、華為、騰訊Java技術(shù)面試題精選

    這篇文章主要為大家分享了阿里、華為、騰訊Java技術(shù)面試題精選,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • 解決fcitx輸入法在IDEA中輸入法候選框無(wú)法跟隨光標(biāo)移動(dòng)的問(wèn)題

    解決fcitx輸入法在IDEA中輸入法候選框無(wú)法跟隨光標(biāo)移動(dòng)的問(wèn)題

    這篇文章主要介紹了解決fcitx輸入法在Intellij IDEA開(kāi)發(fā)工具中輸入法候選框無(wú)法跟隨光標(biāo)移動(dòng)的問(wèn)題,代碼簡(jiǎn)單易懂對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-10-10
  • maven項(xiàng)目引用外部jar包的方法

    maven項(xiàng)目引用外部jar包的方法

    本篇文章主要介紹了maven項(xiàng)目引用外部jar的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-12-12
  • Java中String類使用方法總結(jié)

    Java中String類使用方法總結(jié)

    這篇文章主要介紹了Java中String類的使用方法,文章簡(jiǎn)單易懂,結(jié)尾有實(shí)例代碼幫助大家理解學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06
  • IntelliJ IDEA中properties文件顯示亂碼問(wèn)題的解決辦法

    IntelliJ IDEA中properties文件顯示亂碼問(wèn)題的解決辦法

    今天小編就為大家分享一篇關(guān)于IntelliJ IDEA中properties文件顯示亂碼問(wèn)題的解決辦法,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2018-10-10
  • Java使用Lambda表達(dá)式查找list集合中是否包含某值問(wèn)題

    Java使用Lambda表達(dá)式查找list集合中是否包含某值問(wèn)題

    Java使用Lambda表達(dá)式查找list集合中是否包含某值的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • 解決Mybatis查詢方法selectById()主鍵不一致問(wèn)題

    解決Mybatis查詢方法selectById()主鍵不一致問(wèn)題

    這篇文章主要介紹了解決Mybatis查詢方法selectById()主鍵不一致問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-10-10
  • Spring中@PathVariable和@RequestParam注解的用法區(qū)別

    Spring中@PathVariable和@RequestParam注解的用法區(qū)別

    這篇文章主要介紹了Spring中@PathVariable和@RequestParam注解的用法區(qū)別,@PathVariable 是 Spring 框架中的一個(gè)注解,用于將 URL 中的變量綁定到方法的參數(shù)上,它通常用于處理 RESTful 風(fēng)格的請(qǐng)求,從 URL 中提取參數(shù)值,并將其傳遞給方法進(jìn)行處理,需要的朋友可以參考下
    2024-01-01

最新評(píng)論