認(rèn)識(shí)Java I/O | BIO NIO AIO | 同步與異步 | 阻塞與非阻塞 | I/O多路復(fù)用

原文:認(rèn)識(shí)Java I/O | BIO NIO AIO

一、名詞解釋

1.1 同步與異步

同步與異步更關(guān)注交互雙方是否可以同時(shí)工作

  1. 同步:請(qǐng)求 -> 等待返回 -> 返回 -> 下一次請(qǐng)求,需要等待結(jié)果返回(CS非同時(shí)工作);
  2. 異步:客戶端一直請(qǐng)求,服務(wù)端一直處理,不用等待結(jié)果返回,比如Future(CS同時(shí)工作);

1.2 阻塞與非阻塞

阻塞與非阻塞關(guān)注交互雙方是否可以一心多用

  1. 阻塞:A->B,A一直等著B響應(yīng),期間不去干別的(一心一用);
  2. 非阻塞:A->B,A請(qǐng)求完成可以干別的,B響應(yīng)了再回來繼續(xù)處理(一心多用);

1.3 偽異步I/O

本質(zhì)上還是同步阻塞I/O
不過是在服務(wù)器把socket鏈接封裝成Task提交給線程池處理
因?yàn)橛嘘?duì)列,所以可以突破C:S=1:1的比例

1.4 I/O多路復(fù)用

通過把多個(gè)I/O的阻塞復(fù)用到一個(gè)阻塞上,從而使得系統(tǒng)在單線程情況下可以處理多個(gè)客戶端的請(qǐng)求。
類似于linux的epoll、select

1.5 多路復(fù)用器

Selector,核心是通過Selector來輪詢注冊(cè)在其上的Channel
當(dāng)發(fā)現(xiàn)有Channel就緒就返回Channel的選擇鍵集合,進(jìn)行I/O操作;

二、不同I/O模型對(duì)比表格

不同I/O模型對(duì)比表格.png

三、參考

  1. 《Netty權(quán)威指南 2th》
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容