JDK SelectableChannel
' SelectionKey register(Selector sel, int ops, Object att)
会抛出CancelledKeyException
。我想知道这个方法会抛出这个异常的场景。
Java Doc有一个简单的解释:
如果此频道当前已在给定选择器中注册,但相应的键已被取消
但是相应的关键是什么?由于此方法在此方法调用成功后将返回。所以我很困惑。另一个线程在同一个选择器上注册相同的通道会获得相应的密钥吗?
答案 0 :(得分:1)
如果频道已经在此选择器中注册,则根据新参数修改相应的键并返回,而不是构造新的键。如果它是取消的密钥,则抛出异常。