Класс 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
Конструкторы
| Модификатор | Конструктор и описание |
|---|---|
protected |
AbstractSelector(SelectorProvider provider) Инициализирует новый экземпляр этого класса. |
Методы
| Модификатор и тип | Метод и описание |
|---|---|
protected void |
begin() Помечает начало операции ввода-вывода, которая может блокироваться неопределённо долго. |
protected Set<SelectionKey> |
cancelledKeys() Получает набор отменённых ключей этого селектора. |
void |
close() Закрывает этот селектор. |
protected void |
deregister(AbstractSelectionKey key) Удаляет указанный ключ из набора ключей канала. |
protected void |
end() Помечает конец операции ввода-вывода, которая может блокироваться неопределённо долго. |
protected abstract void |
implCloseSelector() Закрывает этот селектор. |
boolean |
isOpen() Указывает, открыт ли этот селектор. |
SelectorProvider |
provider() Возвращает поставщика, который создал этот канал. |
protected abstract SelectionKey |
register(AbstractSelectableChannel ch,
int ops,
Object att) Регистрирует указанный канал с этим селектором. |
Методы, унаследованные от класса java.nio.channels.Selector
keys, open, select, select, selectedKeys, selectNow, wakeup Методы, унаследованные от класса java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait Подробное описание конструкторов
AbstractSelector
protected AbstractSelector(SelectorProvider provider)
Инициализирует новый экземпляр этого класса.
- Параметры:
-
provider- Поставщик, который создал этот селектор
Подробное описание методов
close
public final void close()
throws IOException Закрывает этот селектор.
Если селектор уже закрыт, то этот метод возвращается немедленно. В противном случае он помечает селектор как закрытый, а затем вызывает метод implCloseSelector для завершения операции закрытия.
- Унаследованно от:
-
closeв интерфейсеCloseable - Унаследованно от:
-
closeв интерфейсеAutoCloseable - Унаследованно от:
-
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()
Возвращает поставщика, который создал этот канал.
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, 2020, 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.