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

В чем разница между Java IO и Java NIO

Java IO (Input/Output) — это традиционный потоковый ввод-вывод, работающий в блокирующем режиме. Каждая операция чтения/записи блокирует поток до завершения. Пример:

java
try (FileInputStream fis = new FileInputStream("file.txt")) {
    int data;
    while ((data = fis.read()) != -1) {
        System.out.print((char) data);
    }
}

Java NIO (New I/O) — неблокирующий, буферизированный и основанный на каналах ввод-вывод. Использует селекторы для мультиплексирования потоков. Пример:

java
try (FileChannel channel = FileChannel.open(Paths.get("file.txt"))) {
    ByteBuffer buffer = ByteBuffer.allocate(1024);
    while (channel.read(buffer) != -1) {
        buffer.flip();
        while (buffer.hasRemaining()) {
            System.out.print((char) buffer.get());
        }
        buffer.clear();
    }
}

Ключевые различия:

  • IO потоковый, NIO буферизированный
  • IO блокирующий, NIO поддерживает неблокирующий режим
  • IO работает с потоками, NIO — с каналами и буферами
  • NIO поддерживает селекторы для работы с множеством соединений в одном потоке
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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