Java NIO permite hacer IO sin bloqueo. Por ejemplo, un hilo puede pedir a un canal que lea datos en un buffer. Mientras el canal lee los datos en el buffer, el hilo puede hacer otra cosa. Una vez que los datos son leídos en el buffer, el hilo puede continuar procesándolos.