Spec-Zone.ru › OpenJDK 25

Класс 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, определённые в этом классе.

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

Начиная с:
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.

Методы, объявленные в классе Object

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

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

SelectorProvider

protected 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 — если произошла ошибка ввода-вывода
Начиная с:
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

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, в том числе концептуальные обзоры, определения терминов, способы обхода ограничений и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторское право © 1993, 2025, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, 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/25/docs/api/java.base/java/nio/channels/spi/SelectorProvider.html

Spec-Zone.ru

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