I/O operations are considered to be blocking operations for
thread execution. This means that, when a thread starts performing I/O, (which would include a series of operations in itself, like opening file, reading, writing, closing of files, etc), it prevents the thread from performing any other operation, till the I/O is over. Hence I/O is called a blocking operation as far as threads are concerned.
There is nothing like non-blocking I/O.