[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-i-o-nio-kakie-osobennosti-nio-vy-znaete":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":19,"progress":20,"seo":21},656,"kakie-osobennosti-nio-vy-znaete",15,"i-o-nio","I\u002FO & NIO","📁","Какие особенности NIO вы знаете?","NIO (New I\u002FO) — это пакет `java.nio`, появившийся в Java 1.4 и предоставляющий альтернативный, более производительный API для операций ввода\u002Fвывода. Он построен вокруг трёх ключевых концепций: каналов, буферов и селекторов.\n\n### Каналы и селекторы\n\nNIO поддерживает различные типы каналов — абстракций более низкого уровня для работы с файловой системой и сетью. Каналы позволяют передавать данные с более высокой скоростью за счёт прямого взаимодействия с механизмами ОС. Каналы могут работать в неблокирующем режиме, а селекторы позволяют одному потоку выполнения одновременно мониторить несколько каналов, выбирая те, которые готовы к операциям чтения или записи.\n\n### Буферы\n\nNIO предоставляет буферизацию через абстрактный класс `Buffer` и его подклассы для всех примитивных типов (кроме `boolean`): `ByteBuffer`, `CharBuffer`, `IntBuffer`, `LongBuffer`, `FloatBuffer`, `DoubleBuffer`, `ShortBuffer`. Буфер — это контейнер фиксированного размера с операциями `clear()`, `flip()`, `rewind()`, `mark()` и `reset()` для управления позицией чтения\u002Fзаписи.\n\n### Кодировки\n\nВ пакете `java.nio.charset` находятся кодеры (`CharsetEncoder`) и декодеры (`CharsetDecoder`), обеспечивающие преобразование между байтовыми последовательностями и символами Unicode. Это позволяет точно контролировать процесс кодирования, включая обработку ошибок (замена, игнорирование, выброс исключения).\n\n### Дополнительные возможности\n\n- Поддержка файловых блокировок (`FileLock`) для координации доступа к файлу между процессами.\n- Memory-mapped файлы (`MappedByteBuffer`) для отображения файлов в оперативную память.\n- Scatter\u002FGather операции — чтение из канала в несколько буферов и запись из нескольких буферов в канал за одну операцию.\n\n> **На собеседовании:** перечислите три кита NIO — каналы, буферы, селекторы — и поясните, что NIO даёт производительность за счёт неблокирующего ввода\u002Fвывода и буферизации, но при этом усложняет код по сравнению с классическим IO.","","junior",[15,16,17,18],"core","основы","nio","io",[],null,{"title":22,"description":23,"ogTitle":24,"ogDescription":25,"keywords":26,"schemaAnswer":36,"featuredSnippetReady":37},"Какие особенности NIO вы знаете — Gymterview","Особенности Java NIO: каналы, буферы, селекторы, кодировки, файловые блокировки, memory-mapped файлы. Подготовка к Java-собеседованию.","Особенности Java NIO: каналы, буферы, селекторы — Gymterview","Три кита NIO — каналы, буферы и селекторы. Кодировки, файловые блокировки, scatter\u002Fgather операции.",[27,28,29,30,31,32,33,34,35],"Java NIO","каналы","буферы","селекторы","ByteBuffer","CharsetEncoder","FileLock","MappedByteBuffer","собеседование","NIO построен на трёх концепциях: каналы (Channel) для ввода\u002Fвывода, буферы (ByteBuffer и подклассы) для хранения данных, селекторы (Selector) для мониторинга нескольких каналов одним потоком. Также NIO предоставляет кодеры\u002Fдекодеры (java.nio.charset), файловые блокировки (FileLock), memory-mapped файлы и scatter\u002Fgather операции.",true]