【尚硅谷】Java NIO详细教程(一套带你掌握IO API/javani...

踩坑
1.事件触发后必须处理,不处理会select方法会一直有事件存在会一直触发。
一种处理是对channel进行读取,写入,关闭操作。
另一种是直接将selectionkey cancel掉。
特别注意的是,当客户端异常断掉后会发送一个read事件给服务端,此时服务端去read会跑出异常,这个是狗的read不算作处理了事件,所以这种情况必须在异常发生时关闭channel或者调用selectionkey的cancel方法。
2.在触发事件时,不能新建线程去处理事件,新建线程处理不认可为处理事件,反而是在触发新的事件,会触发死循环。