千鋒教育-做有情懷、有良心、有品質的職業(yè)教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術干貨  > nio和bio的區(qū)別?為啥nio好?

nio和bio的區(qū)別?為啥nio好?

來源:千鋒教育
發(fā)布人:qyf
時間: 2023-02-27 17:29:36 1677490176

nio和bio的區(qū)別

  同步阻塞IO(JAVA BIO/Blocking IO ): 同步并阻塞,服務器實現(xiàn)模式為一個連接一個線程,即客戶端有連接請求時服務器端就需要啟動一個線程進行處理,如果這個連接不做任何事情會造成不必要的線程開銷.

  Java NIO(Non-Blocking IO ) : 同步非阻塞,服務器實現(xiàn)模式為一個請求一個線程,即客戶端發(fā)送的連接請求都會注冊到多路復用器上,多路復用器輪詢到連接有I/O請求時才啟動一個線程進行處理。NIO的優(yōu)點在于首先基于緩存讀寫文件,能夠批量操作,然后用channel雙向讀寫數(shù)據(jù),減少每次打開斷開流的資源消耗。

  引入selecore的概念,用一個線程管理多個通道,大大減少線程開銷。

  Java AIO(NIO.2) : 異步非阻塞,服務器實現(xiàn)模式為一個有效請求一個線程,客戶端的I/O請求都是由OS先完成了再通知服務器應用去啟動線程進行處理,NIO方式適用于連接數(shù)目多且連接比較短(輕操作)的架構,

  比如聊天服務器,并發(fā)局限于應用中,編程比較復雜,JDK1.4開始支持。AIO方式使用于連接數(shù)目多且連接比較長(重操作)的架構,比如相冊服務器,充分調用OS參與并發(fā)操作,編程比較復雜,JDK7開始支持I/O屬于底層操作,需要操作系統(tǒng)支持,并發(fā)也需要操作系統(tǒng)的支持,所以性能方面不同操作系統(tǒng)差異會比較明顯。另外NIO的非阻塞,需要一直輪詢,也是一個比較耗資源的。所以出現(xiàn)AIO

tags:
聲明:本站稿件版權均屬千鋒教育所有,未經(jīng)許可不得擅自轉載。
10年以上業(yè)內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT