Javaのドキュメントからこれを明確に理解できませんでした。
SocketChannel
ノンブロッキング モードの選択可能なチャネル ( ) があるとします。
を呼び出しchannel.connect()
て false を返し、チャネルをセレクターに登録するとselect()
、select() が最初に呼び出される前、または select() が最初に呼び出される前、または登録はされましたか?
イベントの順序は次のとおりです。
connect
(リターンfalse
)- どういうわけかソケットはこの時点で「接続済み」になります
register
(選択キーを返す)select
(別のスレッドで実行されますが、後で保証されますregister
)
これは他の操作にも当てはまります。一般に、そのチャネルで行われた最後の操作に関連してチャネルが登録される時期は重要ですか、それとも最後のチャネル操作以降に発生したすべての未解決のイベントを選択キーが受け取るのでしょうか?