我无法从 java 文档中清楚地理解这一点。
考虑我SocketChannel
在非阻塞模式下有一个可选通道 ( )。
如果我调用channel.connect()
,它返回 false ,然后我使用选择器注册通道select()
,如果连接实际上在 select() 被首次调用之前完成,甚至在注册完成了吗?
事件的顺序是:
connect
(返回false
)- 不知何故,此时套接字变得“已连接”
register
(返回选择键)select
(在不同的线程上完成,但保证在之后register
)
这也适用于其他操作。一般来说,当通道注册与该通道上完成的最后一次操作相关时是否重要,或者选择键是否会接收自最后一次通道操作以来发生的所有未完成事件?