Класс 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 |
Инициализирует новый экземпляр этого класса. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
protected final void |
begin() |
Отмечает начало операции ввода-вывода, которая может блокироваться неограниченно долго. |
protected final Set |
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 |
Регистрирует указанный канал в этом селекторе. |
Методы, объявленные в классе Selector
keys, open, select, select, select, select, selectedKeys, selectNow, selectNow, wakeup | Модификатор и тип | Метод | Описание |
|---|---|---|
abstract Set |
keys() |
Возвращает набор ключей этого селектора. |
static Selector |
open() |
Открывает селектор. |
abstract int |
select() |
Выбирает набор ключей, соответствующие каналы которых готовы к выполнению операций ввода-вывода. |
abstract int |
select |
Выбирает набор ключей, соответствующие каналы которых готовы к выполнению операций ввода-вывода. |
int |
select |
Выбирает ключи, соответствующие каналы которых готовы к выполнению операций ввода-вывода, и выполняет над ними действие. |
int |
select |
Выбирает ключи, соответствующие каналы которых готовы к выполнению операций ввода-вывода, и выполняет над ними действие. |
abstract Set |
selectedKeys() |
Возвращает набор выбранных ключей этого селектора. |
abstract int |
selectNow() |
Выбирает набор ключей, соответствующие каналы которых готовы к выполнению операций ввода-вывода. |
int |
selectNow |
Выбирает ключи, соответствующие каналы которых готовы к выполнению операций ввода-вывода, и выполняет над ними действие. |
abstract Selector |
wakeup() |
Заставляет первую ещё не завершившуюся операцию выбора немедленно вернуться. |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создаёт и возвращает копию этого объекта. |
boolean |
equals |
Указывает, равен ли этот объект какому-либо другому объекту. |
protected void |
finalize() |
Устарело, будет удалено: этот элемент API подлежит удалению в будущей версии. Финализация устарела и подлежит удалению в одном из следующих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого Object. |
int |
hashCode() |
Возвращает хеш-код этого объекта. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
String |
toString() |
Возвращает строковое представление объекта. |
final void |
wait() |
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания, либо до истечения определённого времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате уведомления или прерывания, либо до истечения определённого времени. |
Подробное описание конструкторов
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
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
© 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.