The documentation of selectorObj.select()
method states
This method performs a blocking selection operation. It returns only after at l
When the thread is blocked in an I/O call, it is still running as far as Java thread is concerned.
Most profilers simply show thread state, which is defined as,
As you can see, thread's WAITING/BLOCKED state has nothing to do with I/O.