天天看點

JavaIO基礎01-基礎感念

1、同步與異步

同步與異步主要是從消息通知機制角度來說的。同步沒有通知,異步有知。

2、阻塞與非阻塞

阻塞與非阻塞主要是程式等待消息通知時的狀态角度來說的。阻塞調用是指調用結果傳回之前,目前線程會被挂起,一直處于等待消息通知,不能夠執行其他業務。

3、同異步與阻非塞

(1)同步阻塞

下載下傳一個檔案,下載下傳人不做任何事情,看着進度條下載下傳完成。

(2)同步非阻塞

下載下傳一個檔案,下載下傳人不做任何事情,等待下載下傳完成的通知。

(3)異步阻塞

下載下傳一個檔案,下載下傳人做其他事情,隔斷時間看着進度是否下載下傳完成。

(4)異步非阻塞

下載下傳一個檔案,下載下傳人做其他事情,等待下載下傳完成的通知。

4、LINUX IO 模型

4.1、LINUX IO 操作步驟

網絡IO的本質是socket的讀取,socket在linux系統被抽象為流,IO可以了解為對流的操作。例如當一個read操作發生時,它會經曆兩個階段:

第一階段:等待資料準備。

第二階段:将資料從核心拷貝到程序中。

對于socket流而言,

第一步:通常涉及等待網絡上的資料分組到達,然後被複制到核心的某個緩沖區。

第二步:把資料從核心緩沖區複制到應用程序緩沖區。

4.2、LINUX IO 模型分類

(1)同步模型(synchronous IO)

阻塞IO(bloking IO)
    非阻塞IO(non-blocking IO)
    多路複用IO(multiplexing IO)
    信号驅動式IO(signal-driven IO) 
           

(2)異步IO(asynchronous IO)

4.3、Linux IO模型矩陣

image.png

4.4、Linux 阻塞IO

4.5、Linux 同步非阻塞IO

4.6、Linux 同步非阻塞IO多路複用

4.7、Linux 異步信号驅動

4.8、Linux 總結

5個IO模型

上一篇: 作業二

繼續閱讀