Spec-Zone.ru › OpenJDK 17

Класс SelectorProvider

java.lang.Object
java.nio.channels.spi.SelectorProvider
public abstract class SelectorProvider extends Object
Класс-провайдер услуг для селекторов и каналов, поддерживающих операции выбора.

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

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

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

Since:
1.4

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

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

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

Модификатор и тип Метод Описание
Channel inheritedChannel()
Возвращает канал, унаследованный от сущности, создавшей эту виртуальную машину Java.
abstract DatagramChannel openDatagramChannel()
Открывает канал дейтаграмм.
abstract DatagramChannel openDatagramChannel(ProtocolFamily family)
Открывает канал дейтаграмм.
abstract Pipe openPipe()
Открывает канал-трубу.
abstract AbstractSelector openSelector()
Открывает селектор.
abstract ServerSocketChannel openServerSocketChannel()
Открывает серверный канал сокета.
ServerSocketChannel openServerSocketChannel(ProtocolFamily family)
Открывает серверный канал сокета.
abstract SocketChannel openSocketChannel()
Открывает сокет-канал.
SocketChannel openSocketChannel(ProtocolFamily family)
Открывает сокет-канал.
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 - Если произошла ошибка ввода-вывода
С:
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.

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

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

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

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

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

В случаях, когда унаследованный канал предназначен для сокета домен Unix, тип Channel, возвращаемый, такой же, как для сокетов протокола Интернет, описанных выше, за исключением того, что сокеты, ориентированные на дейтаграммы, не поддерживаются.

В дополнение к двум типам сокетов, описанным выше, этот метод может вернуть другие типы в будущем.

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

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

openSocketChannel

public SocketChannel openSocketChannel(ProtocolFamily family) throws IOException
Открывает сокет-канал.
Требования к реализации:
Предустановленная реализация этого метода сначала проверяет, что данный протокол family не null, а затем генерирует UnsupportedOperationException.
Параметры:
family - Семейство протоколов
Возвращает:
Новый канал
Исключения:
UnsupportedOperationException - Если указанное семейство протоколов не поддерживается
IOException - Если произошла ошибка ввода-вывода
С:
15

openServerSocketChannel

public ServerSocketChannel openServerSocketChannel(ProtocolFamily family) throws IOException
Открывает серверный сокет-канал.
Требования к реализации:
Предустановленная реализация этого метода сначала проверяет, что данный протокол family не null, а затем генерирует UnsupportedOperationException.
Параметры:
family - Семейство протоколов
Возвращает:
Новый канал
Исключения:
UnsupportedOperationException - Если указанное семейство протоколов не поддерживается
IOException - Если произошла ошибка ввода-вывода
С:
15

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

Spec-Zone.ru

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