Класс 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
Конструкторы
| Модификатор | Конструктор | Описание |
|---|---|---|
protected |
AbstractSelectableChannel(SelectorProvider provider) |
Инициализирует новый экземпляр этого класса. |
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
SelectableChannel |
configureBlocking(boolean block) |
Изменяет режим блокировки этого канала. |
protected void |
implCloseChannel() |
Закрывает этот канал. |
protected abstract void |
implCloseSelectableChannel() |
Закрывает этот канал, поддерживающий выборку. |
protected abstract void |
implConfigureBlocking(boolean block) |
Изменяет режим блокировки этого канала. |
SelectorProvider |
provider() |
Возвращает поставщика, который создал этот канал. |
SelectionKey |
register(Selector sel,
int ops,
Object att) |
Регистрирует этот канал у заданного селектора, возвращая ключ выбора. |
Методы, объявленные в классе java.nio.channels.SelectableChannel
blockingLock, isBlocking, isRegistered, keyFor, register, validOps
Методы, объявленные в классе java.nio.channels.spi.AbstractInterruptibleChannel
begin, close, end
Методы, объявленные в классе java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Методы, объявленные в интерфейсе java.nio.channels.Channel
isOpen
Конструкторы
AbstractSelectableChannel
protected AbstractSelectableChannel(SelectorProvider provider)
Инициализирует новый экземпляр этого класса.
- Параметры:
-
provider- Поставщик, который создал этот канал
Методы
provider
public final SelectorProvider provider()
Возвращает поставщика, который создал этот канал.
- Задан в:
-
providerв классеSelectableChannel - Возвращает:
- Поставщик, который создал этот канал
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- Если произошла ошибка ввода-вывода
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.
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/nio/channels/spi/AbstractSelectableChannel.html