1. 程式人生 > >IO、NIO和AIO的區別

IO、NIO和AIO的區別

IO和NIO的區別:其本質就是阻塞和非阻塞的區別。

阻塞概念:應用程式在獲取網路資料的時候,如果網路傳輸資料很慢,那麼久一直等著,知道傳輸完畢為止。
非阻塞概念:應用程式直接可以獲取已經準備就緒好的資料,無需等待。(從作業系統緩衝區中直接讀取已經緩衝完畢的資料,不用阻塞等待資料緩衝完畢,可以在這段時間中做其他事)

同步和非同步的區別:

同步:應用程式會直接參與IO讀寫操作哦,並且應用程式會直接阻塞到某個方法上,知道資料準備就緒;或者採用輪詢的策略實時檢查資料的就緒狀態,如果就緒則獲取資料。
非同步:所有的IO讀寫交給作業系統處理,於應用程式沒有直接關係,程式不需要關心IO讀寫,當作業系統完成了IO讀寫時,會給應用程式傳送通知,應用程式直接拿走資料即可。

同步說的是server服務端的執行方式(面向作業系統,非同步:作業系統已經完成載入的過程)
阻塞說的是具體技術,接收資料的方式、狀態(io、nio)


AIO:
在NIO基礎上引入了非同步通道的概念,病提供了非同步檔案非同步套接字通道的實現。AIO不需要通過多路複用器對註冊的通道進行輪詢操作即可實現非同步讀寫,從而簡化了NIO變成模型。

相關推薦

IONIOAIO區別

IO和NIO的區別:其本質就是阻塞和非阻塞的區別。 阻塞概念:應用程式在獲取網路資料的時候,如果網路傳輸資料很慢,那麼久一直等著,知道傳輸完畢為止。 非阻塞概念:應用程式直接可以獲取已經準備就緒好的資料,無需等待。(從作業系統緩衝區中直接讀取已經緩衝完畢的資料,不用阻塞等待

BIONIOAIO區別具體實現

一:理解同步:同步就是在發出一個*呼叫*時,在沒有得到結果之前,該*呼叫*就不返回,但是一旦呼叫返回,就得到返回值了。簡單的為:就是由*呼叫者*主動等待這個*呼叫*的結果。 二:非同步:*呼叫*在發出之後,這個呼叫就直接返回了,所以沒有返回結果;換句話說,當一個非同步過程呼

BIONIOAIO區別(簡明版)

      一:事件分離器         在IO讀寫時,把 IO請求 與 讀寫操作 分離調配進行,需要用到事件分離器。根據處理機制的不同,事件分離器又分為:同步的Reactor和非同步的Proactor。         Reactor模型: - 應用程式

Java中BIONIOAIO區別應用場景

最近一直在準備面試,為了使自己的Java水平更上一個檔次,拜讀了李林峰老師的《Netty權威指南》,瞭解了Java關於IO的發展和最新的技術,真是受益匪淺,現在把我總結的關於BIO、NIO和AIO的區別

BIONIOAIO區別

  IO的方式通常分為幾種,同步阻塞的BIO、同步非阻塞的NIO、非同步非阻塞的AIO。 一、BIO 在JDK1.4出來之前,我們建立網路連線的時候採用BIO模式,需要先在服務端啟動一個ServerSocket,然後在客戶端啟動Socket來對服務端進行通訊,預設情況

BIONIOAIO

IO的方式通常分為幾種,同步阻塞的BIO、同步非阻塞的NIO、非同步非阻塞的AIO。 一、BIO      在JDK1.4出來之前,我們建立網路連線的時候採用BIO模式,需要先在服務端啟動一個ServerSocket,然後在客戶端啟動Socket來對服務端進行通訊,預設情

Java的BIONIOAIO介紹

1. I/O概念理解:同步/非同步、阻塞/非阻塞 一個IO操作其實分成了兩個步驟:發起IO請求和實際的IO操作。 同步IO和非同步IO的區別就在於第二個步驟是否阻塞,如果實際的IO讀寫阻塞請求程序,那麼就是同步IO。 阻塞IO和非阻塞IO的區別在於第一步,發

java高併發實戰(八)——BIONIOAIO

由於之前看的容易忘記,因此特記錄下來,以便學習總結與更好理解,該系列博文也是第一次記錄,所有有好多不完善之處請見諒與留言指出,如果有幸大家看到該博文,希望報以參考目的看瀏覽,如有錯誤之處,謝謝大家指出與留言。一、什麼是NIO?NIO是New I/O的簡稱,與舊式的基於流的I/

淺談 BIONIOAIO 區別

引言 BIO和NIO是兩種不同的網路通訊模型,現如今NIO已經大量應用在Jetty、ZooKeeper、Netty等開源框架中。 一個面向流、一個面向緩衝區 一個是阻塞式的、一個非阻塞 一個沒有io多路複用器、一個有 下面通過一個例子解釋兩者區別: 假設當前服

漫話:如何給女朋友解釋什麼是BIONIOAIO

​ 週末午後,在家裡面進行電話面試,我問了面試者幾個關於IO的問題,其中包括什麼是BIO、NIO和AIO?三者有什麼區別?具體如

Java的BIO,NIOAIO區別於演進

作者:公眾號:我是攻城師      前言 Java裡面的IO模型種類較多,主要包括BIO,NIO和AIO,每個IO模型都有不一樣的地方,那麼這些IO模型是如何演變呢,底層的原理又是怎樣的呢? 本文我們就來聊聊。 BIO BIO全稱是Blocking IO,是JDK

IONIOAIO 內部原理分析

相關文章 阻塞IO 所有的讀寫IO都是阻塞操作。 多路複用模型 select/poll 從程式的角度解釋: 將 channel 註冊到 seletor 上,通過輪詢channel是否就緒,將就緒的channel返回。 epoll 將

BIONIOAIO區別

IO的方式通常分為幾種,同步阻塞的BIO、同步非阻塞的NIO、非同步非阻塞的AIO。    同步思想:就是當程式處理完一個請求或者操作的時候,再返回給使用者。使用者等待時間長,且不能關閉該程式或者這個頁面,必須等                   待該請求執行完,才能關閉或

java IONIOAIO詳解

一、IO流(同步、阻塞) 二、NIO(同步、非阻塞) 三、NIO2(非同步、非阻塞)   正文

JS中constvarlet區別

方法 pre 命令 con 使用 它的 comm 作用 影響 在JavaScript中有三種聲明變量的方式:var、let、const。 1.const 聲明創建一個只讀的常量。這不意味著常量指向的值不可變,而是變量標識符的值只能賦值一次,必須初始化。 const b

pageContextrequestsessionapplication區別

一個 斷網 發出 可能 使用 -s size ssi attr pageContext,request,session,application是指變量(對象)的生命周期,它們都可以通過setAttribute()和getAttribute()來設定或讀取屬性。 pageCo

wmain _tmain()main()區別

語言 dos 16bit 函數 argv clu main 找到 ron _tmain()是unicode版本的的main() _tmain這個符號多見於VC++創建的控制臺工程中,這個是為了保證移植unicode而加入的(一般_t、_T、T()這些東西都和unico

HSSFXSSFSXSSF區別以及Excel導出優化

基本 per springmvc linu cell exce 功能 pch 臨時文件   之前有寫過運用POI的HSSF方式導出數據到Excel(見:springMVC中使用POI方式導出excel至客戶端、服務器實例),但這種方式當數據量大到一定程度時容易出現內存溢出等

makefile中=:=+=的區別

有感 分析 eight c語言 區別 all ont 總結 mil 經常有人分不清= 、:=和+=的區別 這裏我總結下做下詳細的分析: 首先你得清楚makefile的運行環境,因為我是linux系統,那麽我得運行環境是shell 在Linux的shell裏,shell

類成員函數的重載覆蓋隱藏區別

c/c++1.重載是指允許存在多個同名函數,而這些函數的參數表不同(或許參數個數不同,或許參數類型不同,或許兩者都不同)。實現原理上:編譯器根據函數不同的參數表,對同名函數的名稱做修飾,然後這些同名函數就成了不同的函數(至少對於編譯器來說是這樣的)。如,有兩個同名函數:function func(p:inte