[讨论] NIO报错 : CancelledKeyException

huangriyan 2016-04-12
我在使用 NIO时 ,如果select 到一个 可以 readable的key,就是使用多线程去read 的 channel。这样下次 select 到的key 使用 isAcceptAble的时候,就会抛出: CancelledKeyException 。之后客户端再也连不上(估计这个socket已经没办法再 select 了)。如果使用单线程去读readable channel,就不会出现这个问题。大神知道什么原因吗?照道理,accept 到一个socket之后,这个socket是会孵化出一个新的socket的(文件符也是新的),后面再用多线程每个单一的socket的。应该不影响listen的socket才对,大神能结合epoll解释下吗?
Global site tag (gtag.js) - Google Analytics