千鋒教育-做有情懷、有良心、有品質的職業教育機構
同步阻塞IO(JAVA BIO/Blocking IO ): 同步并阻塞,服務器實現模式為一個連接一個線程,即客戶端有連接請求時服務器端就需要啟動一個線程進行處理,如果這個連接不做任何事情會造成不必要的線程開銷.
Java NIO(Non-Blocking IO ) : 同步非阻塞,服務器實現模式為一個請求一個線程,即客戶端發送的連接請求都會注冊到多路復用器上,多路復用器輪詢到連接有I/O請求時才啟動一個線程進行處理。
NIO的優點在于首先基于緩存讀寫文件,能夠批量操作,然后用channel雙向讀寫數據,減少每次打開斷開流的資源消耗。
引入selecore的概念,用一個線程管理多個通道,大大減少線程開銷。
Java AIO(NIO.2) : 異步非阻塞,服務器實現模式為一個有效請求一個線程,客戶端的I/O請求都是由OS先完成了再通知服務器應用去啟動線程進行處理,NIO方式適用于連接數目多且連接比較短(輕操作)的架構,比如聊天服務器,并發局限于應用中,編程比較復雜,JDK1.4開始支持。
AIO方式使用于連接數目多且連接比較長(重操作)的架構,比如相冊服務器,充分調用OS參與并發操作,編程比較復雜,JDK7開始支持I/O屬于底層操作,需要操作系統支持,并發也需要操作系統的支持,所以性能方面不同操作系統差異會比較明顯。
另外NIO的非阻塞,需要一直輪詢,也是一個比較耗資源的。所以出現AIO
上一篇
threadlocal原理下一篇
單利模式是什么,線程安全嗎?相關推薦