When select() returns, is it guaranteed that each key in the
selectedKeys set is truly ready for at least one of the operations in
its interest set? I have seen text suggesting that select() is a
hint, but I have seen nothing in Sun's documentation that suggests
that it is so.

Signature
Christopher Benson-Manica | I *should* know what I'm talking about - if I
ataru(at)cyberspace.org | don't, I need to know. Flames welcome.
EJP - 14 Jun 2006 03:39 GMT
> When select() returns, is it guaranteed that each key in the
> selectedKeys set is truly ready for at least one of the operations in
> its interest set? I have seen text suggesting that select() is a
> hint, but I have seen nothing in Sun's documentation that suggests
> that it is so.
It is possible that a selected key is actually invalid, and that should
be your first test. Apart from that I suppose it might theoretically be
possible under some combination of multithreaded operations for a
selected key to have no readyOps(). Using normal NIO programming
techniques you would never detect that anyway, as you would test each
key for each readyOp in turn, and any unready key would just be ignored.