Bootstrap

JAVA NIO是什么

	NIO为非阻塞的IO,再其出现之前,Java是通过socket来实现基本的网络 通信功能的。
	socket本身时阻塞的,如果客户端没有对服务器端发起链接请求,那么accept就i会阻塞。如果连接成功,当数据还在准备阶段,对read的操作同样会阻塞。
	当处理多个连接时,就需要采用多线程的方式,由于没个线程都拥有自己的栈空间,而且由于阻塞会导致大量线程进行上下文切换,使得程序运行非常地下,因此j2se1.4中引入了NIO来解决这个问题。
	NIO通过selector、channel和buffer老师先非阻塞的IO操作。
	NIO非阻塞的实现主要采用了Reactor设计模式,这个设计模式与observer设计模式类似,只不过observer设计模式只处理一个事件源,而reactor设计模式可以来处理多个事件源。
	channel可以被看作一个双向的非阻塞通道。在实现中需要把channel的io事件注册给selector。selector的内部实现原理为:对所有注册的channel进行轮询访问,一旦轮询到一个channel1有注册事件发生,它就通过回传selection-key的方式通知开发人员对channel1进行数据的读写。这种通过轮询的方式处理多线程请求时不需要上下文的切换,因此nio有较高的执行效率。
;