I do not know where you read that the thread is executing in the BLOCKED state when doing I / O. LOCKED state documentation says:
Stream status for a stream blocked while waiting for the monitor to lock. A thread in a locked state expects a monitor lock to enter a synchronized block / method or re-enter the synchronized block / method after calling Object.wait.
So, no, the thread is not in a blocking state when performing IO (unless, of course, reading or writing does not make it wait on the objectβs monitor).
source share