NIO API從Java1.4開始引用起就被普遍應用所使用。NIO API自帶了IO非阻塞操做。java
java.nio.*包的結構:正則表達式
· Buffers 做爲數據容器socket
· Chartsets 將容器中的數據轉換成bytes和Unicode字符工具
· Channels 用以在I/O操做中創建鏈接線程
· Selectors 提供可選可複用的非阻塞IOcode
· Regexps 提供一些工具來操做正則表達式對象
NIO vs BIOio
咱們必須清楚這兩個API的不一樣之處。BIO,阻塞IO,應用於阻塞模式下的普通socket通訊中。當你在socket中讀取,寫入或者執行其餘操做,執行的方法將會對IO對象進行加鎖,直到該操做結束後再釋放。容器
在某些狀況下,在執行某些操做的過程當中,但願該操做在結束後能夠通知執行對象,這樣執行對象就能夠在等待該操做執行完以前執行其餘操做。引用
所以NIO提供了很好的方式在多鏈接socket通訊中操做IO。咱們再也不須要特意爲每個鏈接建立每一條xiah線程,只須要建立幾條線程就足夠了、