Spec-Zone.ru › OpenJDK 27

Класс 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()
Открывает канал pipe.
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
Модификатор и тип Метод Описание
protected Object clone()
Создаёт и возвращает копию этого объекта.
boolean equals(Object obj)
Указывает, является ли другой объект «равным» этому объекту.
protected void finalize()
Устарело, будет удалено: этот элемент API может быть удалён в будущей версии.
Финализация признана устаревшей и может быть удалена в одном из будущих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
int hashCode()
Возвращает значение хеш-кода для этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
String toString()
Возвращает строковое представление объекта.
final void wait()
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова метода notify или interrupt.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова метода notify или interrupt, либо до истечения заданного промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова метода notify или interrupt, либо до истечения заданного промежутка реального времени.

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

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
Открывает канал pipe.
Возвращает:
Новый канал pipe
Вызывает исключение:
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, 2026, 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.

Spec-Zone.ru

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