1、BIO带来的挑战

  BIO即阻塞IO,不管是磁盘IO,还是网络IO,数据在写入OutputStream或者从InputStream读取时都有可能发生阻塞,一旦有阻塞,当前线程将会被挂起,即线程进入非可执行状态,在这个状态下,CPU不会给线程分配时间片,线程将会失去CPU的使用权,即线程暂停运行,这在当前的大规模访问量和有性能要求的情况下是不能被接受的。虽然当前的网络I/O有一些解决办法,如一个客户端一个处理线程,出现阻塞时只是一个线程阻塞而不会影响其他线程工作,还有为了减少系统线程的开销  ,采用线程池的办法来减少线程创建和回收的成本。如下例子:

Socket的Server端

public class Server {

   public static void main(String args[]) throws IOException {
//为了简单起见,所有的异常信息都往外抛
int port = 8899;
//定义一个ServerSocket监听在端口8899上
ServerSocket server = new ServerSocket(port);
while (true) {
//server尝试接收其他Socket的连接请求,server的accept方法是阻塞式的
Socket socket = server.accept();
//每接收到一个Socket就建立一个新的线程来处理它(这里可以使用pool线程池)
new Thread(new Task(socket)).start();
}
} /**
* 用来处理Socket请求的
*/
static class Task implements Runnable {
private Socket socket;
public Task(Socket socket) {
this.socket = socket;
}
public void run() {
try {
handleSocket();
} catch (Exception e) {
e.printStackTrace();
}
} /**
* 跟客户端Socket进行通信
* @throws Exception
*/
private void handleSocket() throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream(), "GBK"));
StringBuilder sb = new StringBuilder();
String temp;
int index;
while ((temp=br.readLine()) != null) {
System.out.println(temp);
if ((index = temp.indexOf("eof")) != -1) {//遇到eof时就结束接收
sb.append(temp.substring(0, index));
break;
}
sb.append(temp);
}
System.out.println("客户端: " + sb);
//读完后写一句
Writer writer = new OutputStreamWriter(socket.getOutputStream(), "UTF-8");
writer.write("你好,客户端。");
writer.write("eof\n");
writer.flush();
writer.close();
br.close();
socket.close();
}
}
}

client客户端

public class Client {

   public static void main(String args[]) throws Exception {
//为了简单起见,所有的异常都直接往外抛
String host = "127.0.0.1"; //要连接的服务端IP地址
int port = 8899; //要连接的服务端对应的监听端口
//与服务端建立连接
Socket client = new Socket(host, port);
//建立连接后就可以往服务端写数据了
Writer writer = new OutputStreamWriter(client.getOutputStream(), "GBK");
writer.write("你好,服务端。");
writer.write("eof\n");
writer.flush();
//写完以后进行读操作
BufferedReader br = new BufferedReader(new InputStreamReader(client.getInputStream(), "UTF-8"));
//设置超时间为10秒
client.setSoTimeout(10*1000);
StringBuffer sb = new StringBuffer();
String temp;
int index;
try {
while ((temp=br.readLine()) != null) {
if ((index = temp.indexOf("eof")) != -1) {
sb.append(temp.substring(0, index));
break;
}
sb.append(temp);
}
} catch (SocketTimeoutException e) {
System.out.println("数据读取超时。");
}
System.out.println("服务端: " + sb);
writer.close();
br.close();
client.close();
}
}

  在以上代码中,你会发现在读取写入的流中会有”eof”的结束标记符,在服务端同时读写时,读取客户端发送的数据完毕后,while循环没有跳出来,服务端也将无法向客户端返回数据,所以在while的判断中加上一个条件,当遇到自定义的结束符时,将跳出循环,继续执行下面代码。

  但是有一些使用场景下仍然是无法解决的,如当前一些需要大量HTTP长连接的情况;这里说一下什么是长连接: HTTP1.1规定了默认保持长连(HTTP persistent connection ,也有翻译为持久连接),数据传输完成了保持TCP连接不断开(不发RST包(RST包用于强制关闭TCP链接)、不四次握手),等待在同域名下继续用这个通道(Channel)传输数据;相反的就是短连接。像淘宝现在使用的Web旺旺,服务端需要同时保持几百万的HTTP连接,但并不是每时每刻这些 连接都需要传输数据,这种情况下不可能同时创建这么多线程来保持连接。即使线程的数量不是问题,仍然有一些问题是无法避免的,比如我们想给某些客户端更高的服务优先级,很难通过设计线程的优先级来完成。另外一种情况是,每个客户端的请求在服务端可能需要访问一些竞争资源,这些客户端在不同线程中,因此需要同步,要实现这种同步操作远比用单线程复杂得多。以上这些情况都说明,我们需要另外一种新的I/O操作方式。

2、NIO的工作机制

  我们先看一下NIO相关类图

aaarticlea/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/4RD0RXhpZgAATU0AKgAAAAgABAE7AAIAAAAOAAAISodpAAQAAAABAAAIWJydAAEAAAAcAAAQ0OocAAcAAAgMAAAAPgAAAAAc6gAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFkbWluaXN0cmF0b3IAAAWQAwACAAAAFAAAEKaQBAACAAAAFAAAELqSkQACAAAAAzg5AACSkgACAAAAAzg5AADqHAAHAAAIDAAACJoAAAAAHOoAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMDE1OjA4OjA5IDEyOjQ5OjU4ADIwMTU6MDg6MDkgMTI6NDk6NTgAAABBAGQAbQBpAG4AaQBzAHQAcgBhAHQAbwByAAAA/+ELIGh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8APD94cGFja2V0IGJlZ2luPSfvu78nIGlkPSdXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQnPz4NCjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iPjxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+PHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9InV1aWQ6ZmFmNWJkZDUtYmEzZC0xMWRhLWFkMzEtZDMzZDc1MTgyZjFiIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iLz48cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0idXVpZDpmYWY1YmRkNS1iYTNkLTExZGEtYWQzMS1kMzNkNzUxODJmMWIiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+PHhtcDpDcmVhdGVEYXRlPjIwMTUtMDgtMDlUMTI6NDk6NTguODkwPC94bXA6Q3JlYXRlRGF0ZT48L3JkZjpEZXNjcmlwdGlvbj48cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0idXVpZDpmYWY1YmRkNS1iYTNkLTExZGEtYWQzMS1kMzNkNzUxODJmMWIiIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyI+PGRjOmNyZWF0b3I+PHJkZjpTZXEgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj48cmRmOmxpPkFkbWluaXN0cmF0b3I8L3JkZjpsaT48L3JkZjpTZXE+DQoJCQk8L2RjOmNyZWF0b3I+PC9yZGY6RGVzY3JpcHRpb24+PC9yZGY6UkRGPjwveDp4bXBtZXRhPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3hwYWNr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5RVgh8qT0cFsmugrPt5pG1y7hLExxxRlR6E7s/yoAt2zyvbqZ12yYwwHTNTUUUAFFFFABRSDiloAKKKKACikB9RiloAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAKN01uNVsllQtORJ5Rz93gZq9WfdRxtrNjI0uHRZNif3sgZrQoAKKKKACiiigAooooAKKKKACqMk6DXIoPKBcwM/megDKMfjn9KvVRk8j+3Is7vtHkNj0C7hn9cUAXqKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAqk1w/wDbYt/l2fZ9+cc53Y/KrtUzLH/bPk7P3nkbt+e27GKALlFFFAFC5gvftBksXto9wAcyRklsdOQR604pqX2cATW3nZ5by224+mf61dooAoxpqYik82W2Zz9wqjAD68mkgXVBJ/pMtsy+iIwP8zV+igDOC6uJPmktCmegRs4/OluF1Xzj9lktRH/D5itkfka0KKAMy8s727ez3SQqkMqyyAA5JHpWnRRQAUUUUAFFFFABVGG43atdQbFHlxxtuHVs7v8ACrxqlbtCdWu1VCJlSPe394c4/rQBdooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKQZxyMUALRRRQAUUUUAFFFFABRRRQBnXVsX1uxnDACJJARnk5C/4Vo1mXUcra9YuoPlrHKHOeOduK06ACiiigAooooAKKKKACiiigAqg8SHXo5vMXeLdlEeOcbhzV+s57eQ+I0uMfuxalM577gaANGiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKQZ5z+FAC0UUUAFFFFABVM+R/bHU/aPIHHbbu/xq5VIwr/AGx5/mAkwhNncfNnNAF2iiigAooooAKKKKACiiigAooooAKKKKACiiigAqlbxw/2tdyJJulZIw6Y+6Ocf1q4apWtuyareTllIlWMADqMZ6/nQBeooooAKKKKACiiigAooooAQkDrR0o7UBs9KADIozRuzS0AM8wbsYNIJAPvBhnpxT/wpGyVoAXIpaM01iRjAzQAuRSL8y+h+lK3bPrSEHdkflQAo7ZobOPlxSKSTTqAGFmHJXigFjztAFK/SlHQUAAz/EBSBgOvWnUgxk+tAGTcSyDxHZRqzeW0UpYY4/hxWrnI+Wsy5uWHiCzt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" alt="" width="542" height="357" />

  图中有 两个关键类:Channel和selector,他们是NIO的两个核心概念。我们有城市交通工具来比喻NIO的工作方式,这里的Channel哟啊比Socket更加具体,它可以比作某种具体的交通工具,如汽车或高铁,而Selector可以比作一个车站的车辆运行调度系统,它将负责监控每辆车的当前运行状态,是已经出站,还是在路上等。也就是它可以轮询每个Channel状态。这里还有一个buffer类 ,它也比Stream更加具体,我们可以将它比作车上的车位。Channel是汽车的话Buffer就是汽车上的座位,它始终是一个具体的概念,与Stream不同,Stream只能代表一个座位 ,至于是什么座位有你自己去想象,也就是你在上车之前并不知道这个车上是否还有没有座位,也不知道上的额是什么车 ,因为你并不能选择。而这些信息都已经被封装在了运输工具(Socket)里面(Socket里面自带了一个IO Stream流),对你是透明的(你是看不见的,你并不知道它的大小,工作方式)。

  NIO引入了Channel、Buffer和Selector就是想把这些信息具体化,让程序员能够有机会控制它们。例如,当我呢吧调用write()往SendQ中写数据时,当一次写的数据超过SendQ长度时需要按照SendQ的长度进行分割,这个过程中需要将用户空间数据和内核地址空间进行切换,而这个切换不是你可以控制的,但在Buffer中我们可以控制Buffer的容量、是否扩容以及如何扩容。

  这里不得不说一下SendQ和RecvQ的两个参数了

  RecvQ:表示网络接收队列。表示收到的数据已经在本地接收缓冲,但是还有部分没有被进程取走,就缓冲在队列,知道进程有空闲取走为止。一般缓冲在队列的时间不会很长。如果接收队列RecvQ一直处在阻塞状态,可能遭受了拒绝服务denial-of-service攻击。

  SenQ:表示网络发送队列。对方没有收到的数据或者没有Ack(正确应答信号)的,IO流还是在本地缓冲区。如果发送队列SendQ不能很快清零,可能是有应用向外发送数据包过快,或者对方接收数据包不够快。

这两个值通常应该为0的,如果不为0可能是有问题的。Packets包在两个队列里都不应该有堆积状态。可接受短暂的非零情况。

  理解了这些概念后,我们看一下实际上它们是如何工作的,下面是一段典型的NIO代码:

public void selector() throws IOException{
ByteBuffer buffer = ByteBuffer.allocate(1024);
Selector selector = Selector.open();
ServerSocketChannel ssc = ServerSocketChannel.open();
ssc.configureBlocking(false);//非阻塞
ssc.socket().bind(new InetSocketAddress(8080));
ssc.register(selector, SelectionKey.OP_ACCEPT);//注册监听事件
while(true){
Set selectedkeys = selector.selectedKeys();//取得所有key的集合
Iterator it = selectedkeys.iterator();//set集合迭代出key
while(it.hasNext()){//判断it的是否还有下一个,没有返回false
SelectionKey key = (SelectionKey) it.next();
if ((key.readyOps() & SelectionKey.OP_ACCEPT) == SelectionKey.OP_ACCEPT) {
ServerSocketChannel serverChanel = (ServerSocketChannel)key.channel();
SocketChannel sc = serverChanel.accept();
sc.configureBlocking( false );
SelectionKey newKey = sc.register( selector,SelectionKey.OP_READ);
it.remove();
}else if((key.readyOps() & SelectionKey.OP_READ)== SelectionKey.OP_READ){
SocketChannel sc = (SocketChannel)key.channel(); //通过学号知道是谁问的问题
int bytesEchoed = 0;
while(true){
buffer.clear();
int n = sc.read(buffer);
if(n<=0){
break;
}
buffer.flip();//反转缓冲区,这时操作系统就可以正确的读取字节发送出去
}
it.remove();
}
}
}
}

以上代码,就算看着JDK API可能理解起来比较吃力,所以通过某些情景来理解,印象可能会更加深刻。

在用NIO通讯的过程中我用以下情景模拟:

1. 学校(ServerSocketChannel)

2. 学校教务处(Selector)

3. 老师 (ServerSocket )

4. 学生 (SocketChannel)

5. 员工号/学生号(SelectionKey)

学校:相当于我们的网络应用程序,一旦学校启动,学校就不停止,不断运行,直到学期结束;

要启动学校就要:

ServerSocketChannel ssc= ServerSocketChannel.open();//新建NIO通道
ssc.configureBlocking( false );//使通道为非阻塞

老师: 相当于服务端的Socket,一个老师对应多个学生,多个学生向老师请教,老师会一一做出回答。而学校要正常运营当然当不了老师,所以在开学之前,必须先聘请专业的老师来任教

ServerSocket ss = ssc.socket();//创建基于NIO通道的socket连接
//新建socket通道的端口
ss.bind(new InetSocketAddress("127.0.0.1",SERVERPORT));

学校教务处: 老师都有了,但是需要有部门对老师和学生做统一的管理, 如果你去一个学校找一个人,实在是找不到,你可以告诉教务处,那个人是学生还是老师,是老师的话员工编号老师姓名的多少,是学生的话学号和姓名是多少,教务处就会找到告诉你他在哪里。

//将NIO通道选绑定到择器,当然绑定后分配的主键为skey
SelectionKey skey = ssc.register( selector, SelectionKey.OP_ACCEPT );

ssc注册了选择器后,其下的老师ServerSocket就也入了员工册了。所以老师的编号就是skey

学生: 学校、老师、教务处都有了,现在就可以招生了!

如果有学生来报名:

while(true){//除非学期结束,否则一直等待学生
int num = selector.select();//获取通道内是否有选择器的关心事件, 意思是有多少学生报告(注:select()方法:选择一组键,其相应的通道以为I/O操作准备就绪。返回值可能为0)
if(num<1){continue; } //当select()方法返回值>1,说明I/O操作还没准备就绪,将阻塞。小于1,往下继续执行。
Set selectedKeys = selector.selectedKeys();//获取通道内关心事件的集合 ,这里的集合就是老师和学生的编号集合,如果key是学生的,那就是老学生来问问题,如果key是老师的,那就是招生办的老师带着一个新生来注册
Iterator it = selectedKeys.iterator();
while (it.hasNext()) {//遍历每个key (学生key和老师key)
.......
}
.....
}

既然有学生来报告,那有两种可能,一种是招生老师带着新生来注册的,一种是老生来问问题的。

上面的while (it.hasNext()) 体可以这样写:

while (it.hasNext()) {//遍历每个事件
try{
SelectionKey key = (SelectionKey)it.next(); //先得到这个学生的编号key
//判断是新生报道还是老生问问题
if ((key.readyOps() & SelectionKey.OP_ACCEPT)
== SelectionKey.OP_ACCEPT) {
//这是招生老师的Key说明是新生注册,先找到招生老师,再由招生老师找到新生,就可以给新生注册学号了
ServerSocketChannel serverChanel = (ServerSocketChannel)key.channel(); //通过key把学校和老师找到了
//从serverSocketChannel中创建出与客户端的连接socketChannel 有了老师才有学生,不可能我教计算机的,来一个想学李小龙的都让他报名
SocketChannel sc = serverChanel.accept(); //学生报名成功
sc.configureBlocking( false );
// 把新连接注册到选择器,新生被接收后给注册个新学号
SelectionKey newKey = sc.register( selector,
SelectionKey.OP_READ ); //注册学号成功,并分配学生的权限
it.remove(); //新生注册任务完成了,呵呵
System.out.println( "Got connection from "+sc );
}else
//读客户端数据的事件,此时有客户端发数据过来,客户端事件 这是老学生来问问题了。
if((key.readyOps() & SelectionKey.OP_READ)== SelectionKey.OP_READ){
// 读取数据 ,接受学生的问题
SocketChannel sc = (SocketChannel)key.channel(); //通过学号知道是谁问的问题 //下面接受问题
int bytesEchoed = 0;
while((bytesEchoed = sc.read(buffer))> 0){
System.out.println("bytesEchoed:"+bytesEchoed);
}
echoBuffer.flip();
System.out.println("limet:"+echoBuffer.limit());
byte [] content = new byte[echoBuffer.limit()];
echoBuffer.get(content);
String result=new String(content);
doPost(result,sc); //相应老师会去做回答的,细节自己去写吧
echoBuffer.clear();
it.remove(); //任务完成,记得上面也是一样,要remove掉,否则下一次又来一次任务,就死循环了
}
}catch(Exception e){}
}
}

补充:

ssc.register( selector, SelectionKey.OP_ACCEPT );

这个方法是把ssc注册绑定到选择器selector 这样下次你想找ssc或者判断一个对象是不是ssc就可以通过selector来查找,查找是通过判断ssc的key得到的。

至于第二个参数SelectionKey.OP_ACCEPT 你可以理解成ssc的key类型或者操作权限

如果 ssc是学校老师,那么绑定成功后 老师就拥有了OP_ACCEPT的权限或者说他的key类型是SelectionKey.OP_ACCEPT

Accept是接受的意思,这是不是很像socket编程里的 accept()方法呢? 是的,没错,我们正是通过这个参数给了老师招生和带学生来注册的权限。

而学生呢?

他拥有的权限为SelectionKey.OP_READ 表示有收发读取消息的权限,即问问题的权限,因此他不能帮别的学生注册。

所以你回到上面仔细看看while结构体里面做了判断如下:

if ((key.readyOps() & SelectionKey.OP_ACCEPT) == SelectionKey.OP_ACCEPT) {...} 很明显,拥有Accept权限的人只可能是老师,那老师有什么事会找教务处? 那肯定就是他是招生办的,招到一个学生来报名来注册了。

然后,马上给这个新连上来的客户端分配了一个key

SelectionKey newKey = sc.register( selector, SelectionKey.OP_READ ); 看,这里只给他OP_READ,而不是Accept哦

另一个if

else if((key.readyOps() & SelectionKey.OP_READ)== SelectionKey.OP_READ){

//很明显,这是这学生,因为所有带OP_READ的人都是前面由招生办老师带过来注册过的。

    总结一下:调用Selector的静态工厂创建一个选择器.open();创建一个服务端的Channel,ServerSocketChannel.open();并把这个通信信道注册到选择器上ssc.register(selector, SelectionKey.OP_ACCEPT);,把这个通信信道设置为非阻塞模式。然后就可以调用Selector的selectedKeys()方法来检查已经注册在这个选择器上的所有通信信道是否有需要的事件发生,如果有某个事件发生,将会返回所有的SelectedKey,通过这个对象Channel()方法就可以取得这个通信信道对象,从而可以读取通信的数据,而这里读取的数据是Buffer,这个Buffer是我们可以控制的缓冲器。

  在上面这段程序中,将Server端的监听连接请求的事件和处理请求的事件放在一个线程中,但是在事件应用中,我们通常会把它们放在两个线程中:一个线程专门负责监听客户端的连接请求,而且是以阻塞方式执行的;另外一个线程专门负责处理请求,这个专门处理请求的线程才会真正采用NIO的方式,像web服务器Tomcat和Jetty都使用这个处理方式。

下图描述了基于NIO的Socket请求的处理过程。

aaarticlea/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/4RD0RXhpZgAATU0AKgAAAAgABAE7AAIAAAAOAAAISodpAAQAAAABAAAIWJydAAEAAAAcAAAQ0OocAAcAAAgMAAAAPgAAAAAc6gAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEFkbWluaXN0cmF0b3IAAAWQAwACAAAAFAAAEKaQBAACAAAAFAAAELqSkQACAAAAAzc3AACSkgACAAAAAzc3AADqHAAHAAAIDAAACJoAAAAAHOoAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMDE1OjA4OjA5IDIyOjI4OjM2ADIwMTU6MDg6MDkgMjI6Mjg6MzYAAABBAGQAbQBpAG4AaQBzAHQAcgBhAHQAbwByAAAA/+ELIGh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8APD94cGFja2V0IGJlZ2luPSfvu78nIGlkPSdXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQnPz4NCjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iPjxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+PHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9InV1aWQ6ZmFmNWJkZDUtYmEzZC0xMWRhLWFkMzEtZDMzZDc1MTgyZjFiIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iLz48cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0idXVpZDpmYWY1YmRkNS1iYTNkLTExZGEtYWQzMS1kMzNkNzUxODJmMWIiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+PHhtcDpDcmVhdGVEYXRlPjIwMTUtMDgtMDlUMjI6Mjg6MzYuNzczPC94bXA6Q3JlYXRlRGF0ZT48L3JkZjpEZXNjcmlwdGlvbj48cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0idXVpZDpmYWY1YmRkNS1iYTNkLTExZGEtYWQzMS1kMzNkNzUxODJmMWIiIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyI+PGRjOmNyZWF0b3I+PHJkZjpTZXEgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj48cmRmOmxpPkFkbWluaXN0cmF0b3I8L3JkZjpsaT48L3JkZjpTZXE+DQoJCQk8L2RjOmNyZWF0b3I+PC9yZGY6RGVzY3JpcHRpb24+PC9yZGY6UkRGPjwveDp4bXBtZXRhPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3hwYWNr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" alt="" />

  其中的Selector可以同时监听一组通信信道Channel上的I/O状态,前提是这个Selector已经注册到这些信道中。选择器Selector可以调用select()方法检查已经注册的通信信道是哪个的I/O是否已经准备好,如果没有至少一组信道I/O状态有改变,那么select()方法会阻塞等待或在超时时间后返回0.如果有多个信道有数据,那么将会把这些数据分配到对应的数据Buffer中。所以关键的地方是,有一个线程来处理所有连接的数据交互,每个连接的数据交互都不是阻塞方式,所以可以同时处理大量的连接请求。

Java NIO的工作方式的更多相关文章

  1. java体系结构与工作方式 《深入分析java web 技术内幕》第七章

    java体系结构与工作方式 7.1 JVM体系结构 何谓JVM JVM(Java Virtual Machine) 通过模拟一个计算机来达到一个计算机所具有的计算功能 指令集:计算机所能识别的机器语言 ...

  2. 读书笔记-NIO的工作方式

    读书笔记-NIO的工作方式 1.BIO是阻塞IO,一旦阻塞线程将失去对CPU的使用权,当前的网络IO有一些解决办法:1)一个客户端对应一个处理线程:2)采用线程池.但也会出问题. 2.NIO的关键类C ...

  3. NIO 的工作方式

    NIO 的工作方式 BIO 带来的挑战 BIO : BIO 通信模型,通常由一个独立的 Acceptor 线程负责监听客户端的连接,接受到请求之后,为每个客户端创建一个新的线程进行链路处理,处理完成之 ...

  4. NIO的工作方式

    BIO带来的挑战 BIO 就是我们常说的阻塞I/O , 不论磁盘I/O 还是网络/O ,数据在写入OutputStream 或者从 InutStream 读取数据时都有可能会阻塞,一旦有了阻塞,线程就 ...

  5. Nio经典工作方式

    public void selector() throws IOException { ByteBuffer buffer = ByteBuffer.allocate(1024); Selector ...

  6. Buffer的工作方式

    1.Buffer的工作方式 前面<java NIO的工作方式>介绍了Selector检测到通信信道I/O有数据传输时,通过select()方法取得SocketChannel,将数据读取或写 ...

  7. [JavaEE]Java NIO原理图文分析及代码实现

    转http://weixiaolu.iteye.com/blog/1479656 目录: 一.java NIO 和阻塞I/O的区别      1. 阻塞I/O通信模型      2. java NIO ...

  8. Java NIO非阻塞理论学习

    Java NIO和阻塞IO的区别: 阻塞I/O在调用InputStream.read()方法时是阻塞的,它会一直等到数据到来时(或超时)才会返回:同样,在调用ServerSocket.accept() ...

  9. Java NIO原理图文分析及代码实现

    原文: http://weixiaolu.iteye.com/blog/1479656 目录: 一.java NIO 和阻塞I/O的区别      1. 阻塞I/O通信模型      2. java ...

随机推荐

  1. windows kafka 环境搭建踩坑记

    版本介绍(64位): Windows 10 JDK1.8.0_171 zookeeper-3.4.8/ kafka_2.11-0.10.0.1.tgz 点击链接进行下载 1. JDK安装和环境搭建 自 ...

  2. oracle 中如何查看某个表所涉及的存储过程

    SELECT DISTINCT * FROM user_source WHERE TYPE = 'PROCEDURE' AND upper(text) LIKE '%PS_KL_ABS_002_DAT ...

  3. Java实现AES加密,异常java.security.InvalidKeyException: Illegal key size 的解决

    Java实现AES加密,抛出异常如下:java.security.InvalidKeyException: Illegal key size 代码参考 http://my.oschina.net/Ja ...

  4. ajax用户是否存在

    $(function(){ $("#username").blur(function(){ var usernameInput=$(this).val(); $.post( &qu ...

  5. (26)A delightful way to teach kids about computers

    https://www.ted.com/talks/linda_liukas_a_delightful_way_to_teach_kids_about_computers/transcript00:1 ...

  6. 大数据项目测试<二>项目的测试工作

    大数据的测试工作: 1.模块的单独测试 2.模块间的联调测试 3.系统的性能测试:内存泄露.磁盘占用.计算效率 4.数据验证(核心) 下面对各个模块的测试工作进行单独讲解. 0. 功能测试 1. 性能 ...

  7. Git合并指定一系列commits到另一个分支

    Git合并指定文件到另一个分支经常被问到如何从一个分支合并特定的文件到另一个分支.其实,只合并你需要的那些commits,不需要的commits就不合并进去了. 合并某个分支上的单个commit首先, ...

  8. APIView源码简单分析图

    APIView源码简单分析 !声明:下面这个dispatch分发方法不在是父类View里的dispatch了,APIView重新封装了这个dispatch.(整个核心就是initialize_requ ...

  9. 计算机网络三:域名、IP地址和TCP/IP协议

    一.域名        域名(Domain Name),简称域名.网域,是由一串用点分隔的字符型标志名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时 ...

  10. 《python语言程序设计》_第6章_函数

    # 6.1_引言 程序1: 结果: Sum from 1 to 10 is 55Sum from 20 to 38 is 513Sum from 35 to 50 is 630 程序2: #程序1和2 ...