io的發(fā)展

前言

  • io是java知識(shí)的核心點(diǎn),只有通過(guò)通信連接起來(lái)的io才叫互聯(lián)網(wǎng)。
  • 分析io,nio, aio的優(yōu)點(diǎn)和缺點(diǎn),使用場(chǎng)景。

典型場(chǎng)景

  • 構(gòu)建一個(gè)應(yīng)用服務(wù)器,能夠支持多個(gè)客戶端連接
  • 這樣一個(gè)場(chǎng)景,我們首先想到的就是使用ServerSocket構(gòu)建同步阻塞服務(wù),特征是為每一個(gè)連接創(chuàng)建一個(gè)線程,并且阻塞等待連接和連接完畢,劣勢(shì):消耗大量的線程,這些線程是需要分配存儲(chǔ)空間的,當(dāng)連接數(shù)量不斷增大,對(duì)服務(wù)資源的消耗是非常大的。
  • 假設(shè)現(xiàn)在在服務(wù)端使用線程池,根據(jù)連接的不斷變化訂臺(tái)改變線程數(shù)量,這樣呢,但是即使是線程池也有線程切換的開(kāi)銷,大量線程之間的切換對(duì)于高并發(fā)的服務(wù)器來(lái)說(shuō)也會(huì)帶來(lái)巨大的資源消耗。
  • 第三種,也就是nio,我們前面介紹的都是同步阻塞模式,而nio是同步非阻塞模式,比較重要的概念是Selector, channel等概念,只有Selector會(huì)阻塞,服務(wù)端真正處理的線程只有一個(gè)。這樣完美的避免了多線程內(nèi)存分配和線程間切換帶來(lái)的開(kāi)銷問(wèn)題。
  • 第四種,aio,異步非阻塞,異步就是不需要等待上一步操作返回,而是采用事件,異步的方式,來(lái)構(gòu)建操作順序,而不是通過(guò)時(shí)間順序
?著作權(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)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 注:1)本人非科班出身,文章的來(lái)源主要是基于一些能找到的資料,在理解的基礎(chǔ)上做一些總結(jié)歸納,以期對(duì)IO相關(guān)的知識(shí)體...
    Drew_Zhong閱讀 1,134評(píng)論 0 2
  • 轉(zhuǎn)自: http://www.itdecent.cn/p/486b0965c296 http://www.jia...
    demop閱讀 4,128評(píng)論 1 21
  • NIO(Non-blocking I/O,在Java領(lǐng)域,也稱為New I/O),是一種同步非阻塞的I/O模型,也...
    閃電是只貓閱讀 3,278評(píng)論 0 7
  • 在一個(gè)方法內(nèi)部定義的變量都存儲(chǔ)在棧中,當(dāng)這個(gè)函數(shù)運(yùn)行結(jié)束后,其對(duì)應(yīng)的棧就會(huì)被回收,此時(shí),在其方法體中定義的變量將不...
    Y了個(gè)J閱讀 4,573評(píng)論 1 14
  • 上一篇《聊聊同步、異步、阻塞與非阻塞》已經(jīng)通俗的講解了,要理解同步、異步、阻塞與非阻塞重要的兩個(gè)概念點(diǎn)了,沒(méi)有看過(guò)...
    天草二十六_簡(jiǎn)村人閱讀 864評(píng)論 0 4

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