Класс 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

Spec-Zone .ru
спецификации, руководства, описания, API