Класс 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, ServerSocketChannel, SocketChannel
public abstract class AbstractSelectableChannel extends SelectableChannel
Базовый класс для реализации каналов, допускающих выбор событий.
Этот класс определяет методы, которые обрабатывают механику регистрации, отмены регистрации и закрытия канала. Он сохраняет текущий режим блокировки канала, а также его текущий набор ключей выбора. Он выполняет всю синхронизацию, необходимую для реализации спецификации SelectableChannel. Реализации абстрактных защищенных методов, определенных в этом классе, не требуют синхронизации с другими потоками, которые могут участвовать в тех же операциях.
- С:
- 1.4
Конструкторы
| Модификатор | Конструктор и описание |
|---|---|
protected |
AbstractSelectableChannel(SelectorProvider provider) Инициализирует новый экземпляр этого класса. |
Методы
| Модификатор и тип | Метод и описание |
|---|---|
Object |
blockingLock() Возвращает объект, на котором синхронизируются методы |
SelectableChannel |
configureBlocking(boolean block) Изменяет режим блокировки этого канала. |
protected void |
implCloseChannel() Закрывает этот канал. |
protected abstract void |
implCloseSelectableChannel() Закрывает этот канал, допускающий выбор событий. |
protected abstract void |
implConfigureBlocking(boolean block) Изменяет режим блокировки этого канала. |
boolean |
isBlocking() Указывает, будут ли все операции ввода-вывода на этом канале блокироваться до завершения. |
boolean |
isRegistered() Указывает, зарегистрирован ли этот канал с какими-либо селекторами. |
SelectionKey |
keyFor(Selector sel) Возвращает ключ, представляющий регистрацию канала с заданным селектором. |
SelectorProvider |
provider() Возвращает поставщика, который создал этот канал. |
SelectionKey |
register(Selector sel,
int ops,
Object att) Регистрирует этот канал с заданным селектором, возвращая ключ выбора. |
Методы, унаследованные от класса java.nio.channels.SelectableChannel
register, validOps Методы, унаследованные от класса java.nio.channels.spi.AbstractInterruptibleChannel
begin, close, end, isOpen Методы, унаследованные от класса java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait Методы, унаследованные от интерфейса java.nio.channels.Channel
close, isOpen Конструкторы
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- Если произошла ошибка ввода-вывода
© 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.