讲讲NIO? 传统的IO流是阻塞式的,会一直监听一个ServerSocket,在调用read等方法时,他会一直等到数据到来或者缓冲区已满时才返回.调用accept也是一直阻塞到有客户端连接才会返回.每个客户端连接过来后,服务端都会启动一个线程去处理该客户端的请求.并且多线程处理多个连接.每个线程拥有自己的栈空间并且占用一些 CPU 时间.每个线程遇到外部未准备好的时候,都会阻塞掉.阻塞的结果就是会带来大量的进程上下文切换.对于NIO,它是非阻塞式,核心类:1.Buffer为所有的原始类型提供 (
基于BIO的服务器,服务端可能要同时保持几百万个HTTP连接,而这些连接并不是每时每刻都在传输数据,所以这种情况不适合使用BIO的服务器:而且需要保证共享资源的同步与安全,这个实现起来相对复杂.这时候就是基于NIO的服务器出场的时候了. 先来比较下两种服务器的代码 1.NIO实现 public class SelectorServer { private static int PORT = 1234; public static void main(String[] args) throws E