hehe... well, I did find a better answer to this problem eventually (
Selector) but it was pretty funny to me for this reason:
1) my background was sockets interface with C, where I was accustomed
to using select() to receive responses.
2) learning java circa 1.1/1.2, it was a frustrating realization that
there was no select() and that I should put all receive handling in
separate threads (grrr)
3) circa 1.4, trying to move over to the nio channels (so that my
server socket accept() thread could be interrupted - grrr), I tried to
use the same model as in point 2, only to find that doesn't work and
the model in point 1 does again....
full circle for me!
someone could have at least told me to rtfm

I spent the last two months thinking very negatively of nio.
cheers,
-Dave