Spec-Zone.ru › OpenJDK 27

Класс AbstractSelectableChannel

java.lang.Object
java.nio.channels.spi.AbstractInterruptibleChannel
java.nio.channels.SelectableChannel
java.nio.channels.spi.AbstractSelectableChannel
Все реализуемые интерфейсы:
Closeable, AutoCloseable, Channel, InterruptibleChannel
Прямые известные подклассы:
DatagramChannel, Pipe.SinkChannel, Pipe.SourceChannel, SctpChannel, SctpMultiChannel, SctpServerChannel, ServerSocketChannel, SocketChannel
public abstract class AbstractSelectableChannel extends SelectableChannel
Базовый класс реализации для каналов, допускающих выбор.

Этот класс определяет методы, обеспечивающие регистрацию, отмену регистрации и закрытие каналов. Он хранит текущий режим блокировки этого канала, а также текущий набор его ключей выбора. Класс выполняет всю синхронизацию, необходимую для реализации спецификации SelectableChannel. Реализациям защищённых абстрактных методов, определённых в этом классе, не требуется синхронизироваться с другими потоками, которые могут выполнять те же операции.

Начиная с версии:
1.4

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

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

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

Модификатор и тип Метод Описание
final Object blockingLock()
Возвращает объект, на котором синхронизируются методы configureBlocking и register.
final SelectableChannel configureBlocking(boolean block)
Изменяет режим блокировки этого канала.
protected final void implCloseChannel()
Закрывает этот канал.
protected abstract void implCloseSelectableChannel()
Закрывает этот канал, допускающий выбор.
protected abstract void implConfigureBlocking(boolean block)
Изменяет режим блокировки этого канала.
final boolean isBlocking()
Определяет, блокируется ли каждая операция ввода-вывода на этом канале до её завершения.
final boolean isRegistered()
Определяет, зарегистрирован ли этот канал в данный момент в каком-либо селекторе.
final SelectionKey keyFor(Selector sel)
Возвращает ключ, представляющий регистрацию канала в указанном селекторе.
final SelectorProvider provider()
Возвращает провайдер, создавший этот канал.
final SelectionKey register(Selector sel, int ops, Object att)
Регистрирует этот канал в указанном селекторе и возвращает ключ выбора.

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

register, validOps
Модификатор и тип Метод Описание
final SelectionKey register(Selector sel, int ops)
Регистрирует этот канал в указанном селекторе и возвращает ключ выбора.
abstract int validOps()
Возвращает набор операций, определяющий операции, поддерживаемые этим каналом.

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

begin, close, end, isOpen
Модификатор и тип Метод Описание
protected final void begin()
Отмечает начало операции ввода-вывода, которая может блокироваться неограниченно долго.
final void close()
Закрывает этот канал.
protected final void end(boolean completed)
Отмечает окончание операции ввода-вывода, которая может блокироваться неограниченно долго.
final boolean isOpen()
Определяет, открыт ли этот канал.

Методы, объявленные в классе 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()
Приостанавливает выполнение текущего потока до его пробуждения, обычно в результате вызова notify или прерывания.
final void wait(long timeoutMillis)
Приостанавливает выполнение текущего потока до его пробуждения, обычно в результате вызова notify или прерывания, либо до истечения заданного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Приостанавливает выполнение текущего потока до его пробуждения, обычно в результате вызова notify или прерывания, либо до истечения заданного промежутка реального времени.

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

AbstractSelectableChannel

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

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

provider

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

isRegistered

public final boolean isRegistered()
Описание скопировано из класса: SelectableChannel
Определяет, зарегистрирован ли этот канал в данный момент в каком-либо селекторе. Новый канал не зарегистрирован.

Из-за неизбежной задержки между отменой ключа и отменой регистрации канала канал может оставаться зарегистрированным некоторое время после отмены всех его ключей. Канал также может оставаться зарегистрированным некоторое время после его закрытия.

Указано в:
isRegistered в классе SelectableChannel
Возвращает:
true тогда и только тогда, когда этот канал зарегистрирован

keyFor

public final SelectionKey keyFor(Selector sel)
Описание скопировано из класса: SelectableChannel
Возвращает ключ, представляющий регистрацию канала в указанном селекторе.
Указано в:
keyFor в классе SelectableChannel
Параметры:
sel — селектор
Возвращает:
Ключ, возвращённый при последней регистрации этого канала в указанном селекторе, или null, если этот канал в данный момент не зарегистрирован в данном селекторе

register

public final SelectionKey register(Selector sel, int ops, Object att) throws ClosedChannelException
Регистрирует этот канал в указанном селекторе и возвращает ключ выбора.

Сначала этот метод проверяет, открыт ли канал и допустим ли указанный начальный набор интересующих операций.

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

В противном случае этот канал ещё не зарегистрирован в указанном селекторе, поэтому вызывается метод register селектора с удержанием соответствующих блокировок. Полученный ключ добавляется в набор ключей этого канала перед возвратом.

Указано в:
register в классе SelectableChannel
Параметры:
sel — селектор, в котором следует зарегистрировать этот канал
ops — набор интересующих операций для создаваемого ключа
att — присоединённый объект для создаваемого ключа; может быть null
Возвращает:
Ключ, представляющий регистрацию этого канала в указанном селекторе
Выбрасывает:
ClosedSelectorException — если селектор закрыт
IllegalBlockingModeException — если этот канал находится в блокирующем режиме
IllegalSelectorException — если этот канал создан не тем же провайдером, что и указанный селектор
CancelledKeyException — если этот канал в данный момент зарегистрирован в указанном селекторе, но соответствующий ключ уже отменён
IllegalArgumentException — если бит в наборе ops не соответствует операции, поддерживаемой этим каналом, то есть если set & ~validOps() != 0
ClosedChannelException — если этот канал закрыт

implCloseChannel

protected final void implCloseChannel() throws IOException
Закрывает этот канал.

Этот метод, определённый в классе AbstractInterruptibleChannel и вызываемый методом close, в свою очередь вызывает метод implCloseSelectableChannel для фактического закрытия канала. Затем он отменяет все ключи этого канала.

Указано в:
implCloseChannel в классе AbstractInterruptibleChannel
Выбрасывает:
IOException — если при закрытии канала произошла ошибка ввода-вывода

implCloseSelectableChannel

protected abstract void implCloseSelectableChannel() throws IOException
Закрывает этот канал, допускающий выбор.

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

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

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

isBlocking

public final boolean isBlocking()
Описание скопировано из класса: SelectableChannel
Определяет, блокируется ли каждая операция ввода-вывода на этом канале до её завершения. Новый канал всегда находится в блокирующем режиме.

Если этот канал закрыт, возвращаемое этим методом значение не определено.

Указано в:
isBlocking в классе SelectableChannel
Возвращает:
true тогда и только тогда, когда этот канал находится в блокирующем режиме

blockingLock

public final Object blockingLock()
Описание скопировано из класса: SelectableChannel
Возвращает объект, на котором синхронизируются методы configureBlocking и register. Это часто бывает полезно при реализации адаптеров, которым необходимо поддерживать определённый режим блокировки в течение короткого промежутка времени.
Указано в:
blockingLock в классе SelectableChannel
Возвращает:
Объект блокировки режима блокировки

configureBlocking

public final SelectableChannel configureBlocking(boolean block) throws IOException
Изменяет режим блокировки этого канала.

Если указанный режим блокировки отличается от текущего, этот метод вызывает метод implConfigureBlocking с удержанием соответствующих блокировок для изменения режима.

Указано в:
configureBlocking в классе SelectableChannel
Параметры:
block — если true, этот канал будет переведён в блокирующий режим; если false, он будет переведён в неблокирующий режим
Возвращает:
Этот канал, допускающий выбор
Выбрасывает:
ClosedChannelException — если этот канал закрыт
IOException — если произошла ошибка ввода-вывода

implConfigureBlocking

protected abstract void implConfigureBlocking(boolean block) throws IOException
Изменяет режим блокировки этого канала.

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

Параметры:
block — если true, этот канал будет переведён в блокирующий режим; если false, он будет переведён в неблокирующий режим
Выбрасывает:
IOException — если произошла ошибка ввода-вывода

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по 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