Spec-Zone.ru › OpenJDK 27

Класс AbstractSelector

java.lang.Object
java.nio.channels.Selector
java.nio.channels.spi.AbstractSelector
Все реализованные интерфейсы:
Closeable, AutoCloseable
public abstract class AbstractSelector extends Selector
Базовый класс реализации селекторов.

Этот класс инкапсулирует низкоуровневые механизмы, необходимые для реализации прерывания операций выбора. Конкретный класс селектора должен вызывать методы begin и end до и после вызова операции ввода-вывода, которая может блокироваться неограниченно долго. Чтобы гарантировать, что метод end будет вызван всегда, эти методы следует использовать в блоке try ... finally:

    try {
        begin();
        // Perform blocking I/O operation here
        ...
    } finally {
        end();
    }

Этот класс также определяет методы для управления набором отменённых ключей селектора и удаления ключа из набора ключей его канала, а также объявляет абстрактный метод register, вызываемый методом register выбираемого канала для выполнения фактической регистрации канала.

С момента:
1.4

Краткое описание конструкторов

AbstractSelector(SelectorProvider provider)
Модификатор Конструктор Описание
protected
Инициализирует новый экземпляр этого класса.

Краткое описание методов

Модификатор и тип Метод Описание
protected final void begin()
Отмечает начало операции ввода-вывода, которая может блокироваться неограниченно долго.
protected final Set<SelectionKey> cancelledKeys()
Возвращает набор отменённых ключей этого селектора.
final void close()
Закрывает этот селектор.
protected final void deregister(AbstractSelectionKey key)
Удаляет указанный ключ из набора ключей его канала.
protected final void end()
Отмечает конец операции ввода-вывода, которая может блокироваться неограниченно долго.
protected abstract void implCloseSelector()
Закрывает этот селектор.
final boolean isOpen()
Проверяет, открыт ли этот селектор.
final SelectorProvider provider()
Возвращает поставщика, создавшего этот канал.
protected abstract SelectionKey register(AbstractSelectableChannel ch, int ops, Object att)
Регистрирует указанный канал в этом селекторе.

Методы, объявленные в классе Selector

keys, open, select, select, select, select, selectedKeys, selectNow, selectNow, wakeup
Модификатор и тип Метод Описание
abstract Set<SelectionKey> keys()
Возвращает набор ключей этого селектора.
static Selector open()
Открывает селектор.
abstract int select()
Выбирает набор ключей, соответствующие каналы которых готовы к выполнению операций ввода-вывода.
abstract int select(long timeout)
Выбирает набор ключей, соответствующие каналы которых готовы к выполнению операций ввода-вывода.
int select(Consumer<SelectionKey> action)
Выбирает ключи, соответствующие каналы которых готовы к выполнению операций ввода-вывода, и выполняет над ними действие.
int select(Consumer<SelectionKey> action, long timeout)
Выбирает ключи, соответствующие каналы которых готовы к выполнению операций ввода-вывода, и выполняет над ними действие.
abstract Set<SelectionKey> selectedKeys()
Возвращает набор выбранных ключей этого селектора.
abstract int selectNow()
Выбирает набор ключей, соответствующие каналы которых готовы к выполнению операций ввода-вывода.
int selectNow(Consumer<SelectionKey> action)
Выбирает ключи, соответствующие каналы которых готовы к выполнению операций ввода-вывода, и выполняет над ними действие.
abstract Selector wakeup()
Заставляет первую ещё не завершившуюся операцию выбора немедленно вернуться.

Методы, объявленные в классе Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создаёт и возвращает копию этого объекта.
boolean equals(Object obj)
Указывает, равен ли этот объект какому-либо другому объекту.
protected void finalize()
Устарело, будет удалено: этот элемент API подлежит удалению в будущей версии.
Финализация устарела и подлежит удалению в одном из следующих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
int hashCode()
Возвращает хеш-код этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
String toString()
Возвращает строковое представление объекта.
final void wait()
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания, либо до истечения определённого времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания, либо до истечения определённого времени.

Подробное описание конструкторов

AbstractSelector

protected AbstractSelector(SelectorProvider provider)
Инициализирует новый экземпляр этого класса.
Параметры:
provider — Поставщик, создавший этот селектор

Подробное описание методов

close

public final void close() throws IOException
Закрывает этот селектор.

Если селектор уже закрыт, этот метод немедленно возвращает управление. В противном случае он помечает селектор как закрытый, а затем вызывает метод implCloseSelector для завершения операции закрытия.

Указан в:
close в интерфейсе AutoCloseable
Указан в:
close в интерфейсе Closeable
Указан в:
close в классе Selector
Вызывает исключение:
IOException — Если произошла ошибка ввода-вывода

implCloseSelector

protected abstract void implCloseSelector() throws IOException
Закрывает этот селектор.

Этот метод вызывается методом close для фактического выполнения закрытия селектора. Он вызывается только в том случае, если селектор ещё не закрыт, и не вызывается более одного раза.

Реализация этого метода должна обеспечить, чтобы любой другой поток, заблокированный в операции выбора на этом селекторе, немедленно вернулся, как если бы был вызван метод wakeup.

Вызывает исключение:
IOException — Если при закрытии селектора произошла ошибка ввода-вывода

isOpen

public final boolean isOpen()
Описание скопировано из класса: Selector
Проверяет, открыт ли этот селектор.
Указан в:
isOpen в классе Selector
Возвращает:
true тогда и только тогда, когда этот селектор открыт

provider

public final SelectorProvider provider()
Возвращает поставщика, создавшего этот канал.
Указан в:
provider в классе Selector
Возвращает:
Поставщик, создавший этот канал

cancelledKeys

protected final Set<SelectionKey> cancelledKeys()
Возвращает набор отменённых ключей этого селектора.

Этот набор следует использовать только при синхронизации на нём.

Возвращает:
Набор отменённых ключей

register

protected abstract SelectionKey register(AbstractSelectableChannel ch, int ops, Object att)
Регистрирует указанный канал в этом селекторе.

Этот метод вызывается методом register канала для фактической регистрации канала в этом селекторе.

Параметры:
ch — Регистрируемый канал
ops — Начальный набор интересующих событий, который должен быть допустимым
att — Начальное присоединённое значение для создаваемого ключа
Возвращает:
Новый ключ, представляющий регистрацию указанного канала в этом селекторе

deregister

protected final void deregister(AbstractSelectionKey key)
Удаляет указанный ключ из набора ключей его канала.

Селектор должен вызывать этот метод для каждого канала, регистрацию которого он отменяет.

Параметры:
key — Удаляемый ключ выбора

begin

protected final void begin()
Отмечает начало операции ввода-вывода, которая может блокироваться неограниченно долго.

Этот метод следует вызывать вместе с методом end, используя блок try ... finally, как показано выше, чтобы реализовать прерывание для этого селектора.

Вызов этого метода обеспечивает вызов метода wakeup селектора, если во время блокировки потока в операции ввода-вывода на этом селекторе вызывается метод interrupt этого потока.

end

protected final void end()
Отмечает конец операции ввода-вывода, которая может блокироваться неограниченно долго.

Этот метод следует вызывать вместе с методом begin, используя блок try ... finally, как показано выше, чтобы реализовать прерывание для этого селектора.

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, обзоры концепций, определения терминов, обходные решения и примеры рабочего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторские права © 1993, 2026, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API