零基础java自学流程-Java语言高级531
同步/異步、阻塞/非阻塞概念
同步異步
同步和異步關注的是消息通信機制?(synchronous communication/ asynchronous communication)
同步:在發出一個調用時,在沒有得到結果之前,該調用就不返回。一旦調用返回,就得到返回值了。調用者主動等待這個調用的結果。
異步:調用在發出之后就直接返回了,沒有立刻得到返回結果。在調用發出后,被調用者通過狀態、通知來通知調用者,或通過回調函數處理這個調用。
I/O
通常來說,IO操作包括:對硬盤的讀寫、對socket的讀寫以及外設的讀寫,并且需要進行用戶空間和內核空
間的區分(用戶空間就是普通的用戶進程,內核空間就是內核進程,只有內核空間才可以直接范圍磁盤等物理
I/O設備)
用戶空間產生一個讀請求,請求再轉交由內核空間執行
1. 內核檢查讀取的數據是否就緒
2. 如果就緒,內核將數據從內核空間復制到用戶空間(內存上拷貝)
阻塞I/O與非阻塞I/O
阻塞I/O:內核在檢查數據未就緒時,會一直等待,直到數據就緒
非阻塞I/O:如果數據沒有就緒,則會返回一個標志信息告知用戶線程當前要讀的數據沒有就緒
它們的區別在于I/O的第一階段,阻塞是選擇等待,非阻塞是返回一個標志信息
那么非阻塞I/O的優勢在哪里呢?使用阻塞I/O處理網絡連接時,有10000個連接就要開10000個線程,無論
有沒有數據到來,處理某一連接的線程必須“忠實地阻塞”。而非阻塞I/O就不需要這樣,它可以維護一個1000
個線程的線程池,當有數據就緒時,啟動一個線程去接受數據,當沒有數據時,線程不需要等待,直接就可以
回到池中,等待被調度到去接受其它連接。因此非阻塞I/O非常適合連接多但傳輸的數據內容不大的情況,如
果連接少數據多,阻塞I/O更容易編程
同步I/O和異步I/O
事實上,同步IO和異步IO模型是針對用戶線程和內核的交互來說的,即數據是否就緒的消息傳遞機制
同步IO:當用戶發出IO請求操作之后,如果數據沒有就緒,需要通過用戶線程或者內核不斷地去輪詢數據是否
就緒,當數據就緒時,再將數據從內核拷貝到用戶線程
異步IO:只有IO請求操作的發出是由用戶線程來進行的,內核自動完成檢查數據是否就緒和將數據拷貝
到用戶空間的過程,然后發送通知告知用戶線程IO操作已經完成。
尚學堂給同學們帶來全新的Java300集課程啦!java零基礎小白自學Java必備優質教程_手把手圖解學習Java,讓學習成為一種享受_嗶哩嗶哩_bilibili尚學堂給同學們帶來全新的Java300集課程啦本課程為Java300集2022版第一季,配合最新版的Java課程,所有視頻重新錄制,課件所有圖形做了重新繪制和配色,圖解學習Java,讓學習成為一種享受本套教程專門為零基礎學員而制,適合準備入行Java開發的零基礎學員,視頻中穿插多個實戰項目。每一個知識點都講解的通俗易懂,由淺入深。不僅適用于零基礎的初學者,有經驗的程序員也可做鞏固學習。后續課https://www.bilibili.com/video/BV1qL411u7eE?spm_id_from=333.999.0.0
總結
以上是生活随笔為你收集整理的零基础java自学流程-Java语言高级531的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 三菱PLC编程指令简介
- 下一篇: java sheet 打印区域设定,如何