Встречается на собеседованиях • сегодня

Что произойдет с потоком при выполнении I/O операции

При выполнении I/O операции поток переходит в состояние BLOCKED (если используется блокирующий I/O) или остается RUNNABLE (если используется неблокирующий I/O с NIO). В блокирующем режиме поток будет ждать завершения операции, освобождая CPU для других задач. В неблокирующем режиме поток может продолжать выполнение других задач, проверяя готовность данных через механизмы вроде Selector в NIO.

Пример блокирующего чтения:

java
try (InputStream in = new FileInputStream("file.txt")) {
    int data = in.read(); // Поток блокируется здесь
} catch (IOException e) {
    e.printStackTrace();
}

Для асинхронного I/O (NIO.2):

java
AsynchronousFileChannel channel = AsynchronousFileChannel.open(Paths.get("file.txt"));
ByteBuffer buffer = ByteBuffer.allocate(1024);
channel.read(buffer, 0, buffer, new CompletionHandler<>() {
    @Override
    public void completed(Integer result, ByteBuffer attachment) {
        // Обработка данных
    }
});
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы