Назад к вопросам
Junior
154
questionbank
Что такое селектор?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Селектор в контексте Java может относиться к нескольким понятиям, наиболее распространенные из которых:
-
NIO Selector: В пакете
java.nioSelector– это мультиплексированный неблокирующий ввод/вывод механизм. Он позволяет одному потоку обрабатывать множество каналов (Channel).- Назначение: Управлять набором регистрированных каналов, определяя, когда канал готов к выполнению определенной операции (чтение, запись, соединение, принятие).
- Работа: Поток регистрирует каналы у селектора с указанием интересующих операций (
SelectionKey). Селектор блокируется до тех пор, пока один или несколько каналов не будут готовы. Затем поток получает набор готовых ключей (SelectionKey) и выполняет соответствующие операции. - Преимущества: Эффективность при большом количестве соединений, так как не требуется создавать отдельный поток для каждого соединения (как в традиционном I/O).
// Пример использования Selector Selector selector = Selector.open(); ServerSocketChannel serverChannel = ServerSocketChannel.open(); serverChannel.configureBlocking(false); serverChannel.socket().bind(new InetSocketAddress(8080)); serverChannel.register(selector, SelectionKey.OP_ACCEPT); while (true) { selector.select(); // Блокируется до готовности каналов Set<SelectionKey> selectedKeys = selector.selectedKeys(); Iterator<SelectionKey> keyIterator = selectedKeys.iterator(); while (keyIterator.hasNext()) { SelectionKey key = keyIterator.next(); if (key.isAcceptable()) { // Обработка входящего соединения } else if (key.isReadable()) { // Чтение данных } else if (key.isWritable()) { // Запись данных } keyIterator.remove(); } } -
CSS Selector (через Java libraries): В контексте веб-скрейпинга или парсинга HTML/XML с использованием библиотек типа Jsoup, селектор представляет собой строку (подобно CSS-селектору), используемую для выбора элементов в DOM-дереве.
- Назначение: Найти определенные элементы в HTML или XML документе по их имени тега, классам, идентификаторам, атрибутам и их комбинациям.
- Работа: Библиотека парсит документ и предоставляет методы, принимающие строковый селектор. Эти методы возвращают набор элементов, соответствующих селектору.
- Пример:
.my-class a[href]выберет все ссылки с классомmy-class.
// Пример с использованием Jsoup (гипотетический) String html = "<html><body><p class='greeting'>Hello</p><a href='#'>Link</a></body></html>"; Document doc = Jsoup.parse(html); Elements paragraphs = doc.select("p.greeting"); // Выбирает параграф с классом greeting
Наиболее вероятный контекст в собеседовании Java-разработчика – это java.nio.Selector.