当SelectableChannel寄存器方法将获得CancelledKeyException

时间:2015-09-16 11:54:36

标签: java netty nio

JDK SelectableChannel' SelectionKey register(Selector sel, int ops, Object att)会抛出CancelledKeyException。我想知道这个方法会抛出这个异常的场景。

Java Doc有一个简单的解释:

  

如果此频道当前已在给定选择器中注册,但相应的键已被取消

但是相应的关键是什么?由于此方法在此方法调用成功后将返回。所以我很困惑。另一个线程在同一个选择器上注册相同的通道会获得相应的密钥吗?

1 个答案:

答案 0 :(得分:1)

如果频道已经在此选择器中注册,则根据新参数修改相应的键并返回,而不是构造新的键。如果它是取消的密钥,则抛出异常。