Класс 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 канала с выбором, чтобы выполнить фактическую работу по регистрации канала.
- C момента:
- 1.4
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
protected |
Инициализирует новый экземпляр этого класса. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
protected final void |
begin() |
Помечает начало операции ввода-вывода, которая может блокироваться неопределённо долго. |
protected final Set<SelectionKey> |
cancelledKeys() |
Возвращает набор отменённых ключей этого селектора. |
final void |
close() |
Закрывает этот селектор. |
protected final void |
deregister |
Удаляет заданный ключ из набора ключей его канала. |
protected final void |
end() |
Помечает конец операции ввода-вывода, которая может блокироваться неопределённо долго. |
protected abstract void |
implCloseSelector() |
Закрывает этот селектор. |
final boolean |
isOpen() |
Указывает, открыт ли этот селектор. |
final SelectorProvider |
provider() |
Возвращает провайдера, который создал этот канал. |
protected abstract SelectionKey |
register |
Регистрирует заданный канал с этим селектором. |
Подробное описание конструкторов
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()
© 1993, 2021, 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.
https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/nio/channels/spi/AbstractSelector.html