NIO обеспечивает неблокируемый доступ к ресурсам за счет следующих механизмов:
- Каналы (Channels): Представляют собой двунаправленное соединение между буфером и сущностью, способной выполнять операции ввода-вывода (например, файлом или сетевым сокетом). Каналы могут быть как блокирующими, так и неблокирующими.
- Буферы (Buffers): Контейнеры для хранения данных фиксированного размера. Операции ввода-вывода выполняются между каналами и буферами.
- Селекторы (Selectors): Позволяют одному потоку обрабатывать множество каналов. Селектор может "слушать" события готовности на зарегистрированных каналах (например, готовность к чтению или записи) и оповещать поток при их возникновении.
java