什么是NIO
NIO被称作是 New IO或者Non block IO。它是Jdk1.4开发引入的类库。NIO与BIO的最大不同是,BIO是面向流,而BIO是面向缓冲区buffer。Java的IO数据流向是固定的,要么读,要么写。但是NIO则可以同时支持读写。
NIO三大核心
1.Selector
前面的linux的5种IO模型 提到过,NIO模型会不断的轮询,向操作系统确认数据。Jdk中,Selector承当了这个职责。Selector维护着一张Channel列表,然后不断轮询检查channel状态。一旦发生某个channel发生读写事件,就会被检测到,进行后续的IO操作。
//获取通道
ServerSocketChannel channel1 = ServerSocketChannel.open();
//非阻塞
channel1.configureBlocking(false);
//绑定连接
channel1.bind(new InetSocketAddress(8080));
Selector selector = Selector.open();
//将channel注册到selector,用作轮询使用
channel