Встречается на собеседованиях • сегодня
Как NIO обеспечивает неблокируемый доступ к ресурсам
NIO (New I/O) использует каналы (`Channel`) и буферы (`Buffer`) для неблокирующего ввода-вывода. Основной механизм — `Selector`, который позволяет одному потоку мониторить множество каналов на готовность к операциям (чтение, запись, подключение).
Пример:
```java
Selector selector = Selector.open();
SocketChannel channel = SocketChannel.open();
channel.configureBlocking(false); // Неблокирующий режим
channel.connect(new InetSocketAddress("example.com", 80));
channel.register(selector, SelectionKey.OP_CONNECT);
while (true) {
selector.select(); // Блокирует, пока не будет готов хотя бы один канал
Set keys = selector.selectedKeys();
for (SelectionKey key : keys) {
if (key.isConnectable()) {
// Обработка подключения
}
if (key.isReadable()) {
// Чтение данных
}
}
keys.clear();
}
```
Ключевые моменты:
- Каналы работают в неблокирующем режиме (`configureBlocking(false)`)
- `Selector` централизованно обрабатывает события
- Один поток может обслуживать множество соединений

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы