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

Как создать отдельный поток для I/O операции

Для создания отдельного потока под I/O операции в Java можно использовать Thread или ExecutorService. Лучше использовать ExecutorService, так как он управляет пулом потоков эффективнее:

java
ExecutorService executor = Executors.newSingleThreadExecutor();
executor.submit(() -> {
    try {
        // I/O операция, например чтение файла
        Files.readAllBytes(Paths.get("file.txt"));
    } catch (IOException e) {
        e.printStackTrace();
    }
});
executor.shutdown(); // не забыть закрыть

Для асинхронных операций с NIO (Java 7+) можно использовать AsynchronousFileChannel:

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) {
        // обработка данных
    }

    @Override
    public void failed(Throwable exc, ByteBuffer attachment) {
        exc.printStackTrace();
    }
});
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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