Spec-Zone.ru › OpenJDK 17

Класс SelectableChannel

java.lang.Object
java.nio.channels.spi.AbstractInterruptibleChannel
java.nio.channels.SelectableChannel
Все реализованные интерфейсы:
Closeable, AutoCloseable, Channel, InterruptibleChannel
Непосредственные известные подклассы:
AbstractSelectableChannel
public abstract class SelectableChannel extends AbstractInterruptibleChannel implements Channel
Канал, который может быть мультиплексирован с помощью Selector.

Для использования с селектором экземпляр этого класса должен быть предварительно зарегистрирован с помощью метода register. Этот метод возвращает новый объект SelectionKey, представляющий регистрацию канала с селектором.

После регистрации с селектором канал остается зарегистрированным до его дерегистрации. Это включает в себя освобождение ресурсов, выделенных каналу селектором.

Канал не может быть дерегистрирован напрямую; вместо этого ключ, представляющий его регистрацию, должен быть отменён. Отмена ключа запрашивает deregistratsiyu канала во время следующей операции выбора селектора. Ключ может быть отменен явно, вызвав его метод cancel. Все ключи канала отменяются неявно при закрытии канала, либо вызовом его метода close, либо прерыванием потока, заблокированного в операции ввода-вывода по каналу.

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

Канал может быть зарегистрирован не более одного раза с любым конкретным селектором.

Регистрация канала с одним или несколькими селекторами может быть определена вызовом метода isRegistered.

Каналы Selectable безопасны для использования в нескольких потоках одновременно.

Режим блокировки

Каналы Selectable находятся либо в режиме блокировки, либо в режиме неблокировки. В режиме блокировки каждая операция ввода-вывода, вызванная на канале, будет заблокирована до завершения. В режиме неблокировки операция ввода-вывода никогда не будет заблокирована и может передать меньше байтов, чем было запрошено, или вообще не передать байтов. Режим блокировки канала Selectable может быть определен вызовом метода isBlocking.

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

С:
1.4
См. также:
  • SelectionKey
  • Selector

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

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

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

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

Методы, объявленные в классе java.nio.channels.spi.AbstractInterruptibleChannel

begin, close, end, implCloseChannel, isOpen

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

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Методы, объявленные в интерфейсе java.nio.channels.Channel

isOpen

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

SelectableChannel

protected SelectableChannel()
Инициализирует новый экземпляр этого класса.

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

provider

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

validOps

public abstract int validOps()
Возвращает набор операций, определяющий поддерживаемые этим каналом операции. Биты, установленные в этом целочисленном значении, обозначают точно те операции, которые допустимы для этого канала. Этот метод всегда возвращает одно и то же значение для заданного конкретного класса канала.
Возвращает:
Набор допустимых операций

isRegistered

public abstract boolean isRegistered()
Указывает, зарегистрирован ли этот канал в настоящее время с какими-либо селекторами. Недавно созданный канал не зарегистрирован.

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

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

keyFor

public abstract SelectionKey keyFor(Selector sel)
Возвращает ключ, представляющий регистрацию канала с заданным селектором.
Параметры:
sel - Селектор
Возвращает:
Ключ, возвращенный при последней регистрации этого канала с заданным селектором, или null если этот канал в настоящее время не зарегистрирован с этим селектором

register

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

Если этот канал в настоящее время зарегистрирован с заданным селектором, то возвращается ключ выбора, представляющий эту регистрацию. Набор интересов ключа будет изменен на ops, как если бы был вызван метод interestOps(int). Если аргумент att не равен null, то прикрепление ключа будет установлено на это значение. Если ключ уже был отменен, будет брошено исключение CancelledKeyException.

В противном случае этот канал еще не был зарегистрирован с заданным селектором, поэтому он регистрируется, и возвращается новый ключ. Начальный набор интересов ключа будет ops, а его прикрепление будет att.

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

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

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

register

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

Вызов этого метода удобства в форме

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

configureBlocking

public abstract SelectableChannel configureBlocking(boolean block) throws IOException
Настройка режима блокировки этого канала.

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

Этот метод может быть вызван в любое время. Новый режим блокировки будет влиять только на операции ввода-вывода, которые инициируются после возвращения этого метода. Для некоторых реализаций это может потребовать блокировки до завершения всех ожидающих операций ввода-вывода.

Если этот метод вызывается во время другого вызова этого метода или метода register, то он будет сначала блокироваться до завершения другой операции.

Параметры:
block - Если true , то этот канал будет переведён в режим блокировки; если false , то он будет переведён в режим без блокировки
Возвращает:
Этот канал с выбором
Исключения:
ClosedChannelException - Если этот канал закрыт
IllegalBlockingModeException - Если block равно true и этот канал зарегистрирован с одним или несколькими селекторами
IOException - Если произошла ошибка ввода-вывода

isBlocking

public abstract boolean isBlocking()
Указывает, будут ли все операции ввода-вывода на этом канале блокироваться до завершения. Недавно созданный канал всегда находится в режиме блокировки.

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

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

blockingLock

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

© 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/SelectableChannel.html

Spec-Zone.ru

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