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线程,只须要建立几条线程就足够了、