Класс SelectorProvider

public abstract class SelectorProvider
extends Object

Класс-провайдер сервисов для селекторов и каналов, поддерживающих выбор событий.

Провайдер селектора — это конкретный подкласс этого класса, имеющий конструктор без аргументов и реализующий абстрактные методы, указанные ниже. В данном вызове виртуальной машины Java поддерживается один системный провайдер по умолчанию, который возвращается методом provider. Первый вызов этого метода ищет провайдер по умолчанию, как описано ниже.

Системный провайдер по умолчанию используется статическими open методами классов DatagramChannel, Pipe, Selector, ServerSocketChannel и SocketChannel. Он также используется методом System.inheritedChannel(). Программа может использовать провайдер, отличный от провайдера по умолчанию, создав экземпляр этого провайдера и вызвав непосредственно open методы, определённые в этом классе.

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

Since:
1.4

Конструкторы

Модификатор Конструктор Описание
protected SelectorProvider()

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

Методы

Модификатор и тип Метод Описание
Channel inheritedChannel()

Возвращает канал, унаследованный от сущности, которая создала эту виртуальную машину Java.

abstract DatagramChannel openDatagramChannel()

Открывает канал датаграмм.

abstract DatagramChannel openDatagramChannel​(ProtocolFamily family)

Открывает канал датаграмм.

abstract Pipe openPipe()

Открывает канал-трубу.

abstract AbstractSelector openSelector()

Открывает селектор.

abstract ServerSocketChannel openServerSocketChannel()

Открывает серверный сокет-канал.

abstract SocketChannel openSocketChannel()

Открывает сокет-канал.

static SelectorProvider provider()

Возвращает системный провайдер селектора по умолчанию для данного вызова виртуальной машины Java.

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

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

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

SelectorProvider

protected SelectorProvider()

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

Исключения:
SecurityException - Если установлен менеджер безопасности и он запрещает RuntimePermission("selectorProvider")

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

provider

public static SelectorProvider provider()

Возвращает системный провайдер селектора по умолчанию для данного вызова виртуальной машины Java.

Первый вызов этого метода находит объект провайдера по умолчанию следующим образом:

  1. Если системная переменная java.nio.channels.spi.SelectorProvider определена, то она принимается как полное квалифицированное имя конкретного класса провайдера. Класс загружается и создаётся; если этот процесс завершается ошибкой, то генерируется неопределённая ошибка.

  2. Если класс провайдера был установлен в JAR-файле, видимом для загрузчика системного класса, и этот JAR-файл содержит файл конфигурации провайдера с именем java.nio.channels.spi.SelectorProvider в каталоге ресурсов META-INF/services, то используется первое имя класса, указанное в этом файле. Класс загружается и создаётся; если этот процесс завершается ошибкой, то генерируется неопределённая ошибка.

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

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

Возвращает:
Системный провайдер селектора по умолчанию

openDatagramChannel

public abstract DatagramChannel openDatagramChannel()
                                             throws IOException

Открывает канал датаграмм.

Возвращает:
Новый канал
Исключения:
IOException - Если произошла ошибка ввода-вывода

openDatagramChannel

public abstract DatagramChannel openDatagramChannel(ProtocolFamily family)
                                             throws IOException

Открывает канал датаграмм.

Параметры:
family - Семейство протоколов
Возвращает:
Новый канал датаграмм
Исключения:
UnsupportedOperationException - Если указанное семейство протоколов не поддерживается
IOException - Если произошла ошибка ввода-вывода
Since:
1.7

openPipe

public abstract Pipe openPipe()
                       throws IOException

Открывает канал-трубу.

Возвращает:
Новая труба
Исключения:
IOException - Если произошла ошибка ввода-вывода

openSelector

public abstract AbstractSelector openSelector()
                                       throws IOException

Открывает селектор.

Возвращает:
Новый селектор
Исключения:
IOException - Если произошла ошибка ввода-вывода

openServerSocketChannel

public abstract ServerSocketChannel openServerSocketChannel()
                                                     throws IOException

Открывает серверный сокет-канал.

Возвращает:
Новый канал
Исключения:
IOException - Если произошла ошибка ввода-вывода

openSocketChannel

public abstract SocketChannel openSocketChannel()
                                         throws IOException

Открывает сокет-канал.

Возвращает:
Новый канал
Исключения:
IOException - Если произошла ошибка ввода-вывода

inheritedChannel

public Channel inheritedChannel()
                         throws IOException

Возвращает канал, унаследованный от сущности, которая создала эту виртуальную машину.

Во многих операционных системах процесс, такой как виртуальная машина Java, может быть запущен таким образом, чтобы процесс мог унаследовать канал от сущности, которая создала процесс. Способ, которым это делается, зависит от системы, как и возможные сущности, с которыми канал может быть соединён. Например, в системах UNIX используется демон интернет-служб (inetd) для запуска программ, обрабатывающих запросы, когда запрос поступает на связанный сетевой порт. В этом примере процесс, который запускается, унаследует канал, представляющий сетевой сокет.

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

  • Если унаследованный канал представляет собой ориентированный на потоки соединённый сокет, то возвращается SocketChannel. Сокет-канал, по крайней мере изначально, находится в режиме блокировки, связан с адресом сокета и подключён к узлу.

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

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

Помимо ориентированных на сеть каналов, этот метод может возвращать и другие виды каналов в будущем.

Первый вызов этого метода создаёт возвращаемый канал. Последующие вызовы этого метода возвращают тот же канал.

Возвращает:
Унаследованный канал, если таковой существует, в противном случае null.
Исключения:
IOException - Если произошла ошибка ввода-вывода
SecurityException - Если установлен менеджер безопасности и он запрещает RuntimePermission("inheritedChannel")
Since:
1.5

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

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