Класс SelectorProvider
public abstract class SelectorProvider extends Object
Провайдер селектора — это конкретный подкласс этого класса, имеющий конструктор без аргументов и реализующий абстрактные методы, описанные ниже. В данной инстанциации виртуальной машины Java поддерживается единственный системный провайдер по умолчанию, который возвращается методом provider. Первый вызов этого метода найдёт провайдера по умолчанию, как указано ниже.
Системный провайдер по умолчанию используется статическими методами open классов DatagramChannel, Pipe, Selector, ServerSocketChannel и SocketChannel. Он также используется методом System.inheritedChannel(). Программа может использовать провайдер, отличный от провайдера по умолчанию, создав экземпляр этого провайдера и вызвав непосредственно методы open, определённые в этом классе.
Все методы этого класса безопасны для использования несколькими одновременными потоками.
- Since:
- 1.4
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
protected |
Инициализирует новый экземпляр этого класса. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
Channel |
inheritedChannel() |
Возвращает канал, унаследованный от сущности, создавшей эту виртуальную машину Java. |
abstract DatagramChannel |
openDatagramChannel() |
Открывает канал дейтаграмм. |
abstract DatagramChannel |
openDatagramChannel |
Открывает канал дейтаграмм. |
abstract Pipe |
openPipe() |
Открывает канал-трубу. |
abstract AbstractSelector |
openSelector() |
Открывает селектор. |
abstract ServerSocketChannel |
openServerSocketChannel() |
Открывает канал сокета-сервера. |
ServerSocketChannel |
openServerSocketChannel |
Открывает канал сокета-сервера. |
abstract SocketChannel |
openSocketChannel() |
Открывает канал сокета. |
SocketChannel |
openSocketChannel |
Открывает канал сокета. |
static SelectorProvider |
provider() |
Возвращает системный провайдер селектора по умолчанию для данной инстанциации виртуальной машины Java. |
Подробное описание конструкторов
SelectorProvider
protected SelectorProvider()
Подробное описание методов
provider
public static SelectorProvider provider()
Первый вызов этого метода находит объект поставщика по умолчанию следующим образом:
Если система свойство
java.nio.channels.spi.SelectorProviderопределено, то оно считается полным именем конкретного класса поставщика. Класс загружается и создается; если этот процесс завершается неудачно, выбрасывается неопределённая ошибка.Если класс поставщика был установлен в файле jar, видимом системному загрузчику классов, и этот файл jar содержит файл конфигурации поставщика, названный
java.nio.channels.spi.SelectorProviderв каталоге ресурсовMETA-INF/services, то первым именем класса в этом файле будет. Класс загружается и создается; если этот процесс завершается неудачно, выбрасывается неопределённая ошибка.Наконец, если ни один поставщик не был указан ни одним из вышеперечисленных способов, то создаётся системный поставщик по умолчанию и результат возвращается.
Последующие вызовы этого метода возвращают поставщика, который был возвращён при первом вызове.
- Возвращает:
- Системный поставщик селекторов по умолчанию
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, может быть запущен таким образом, что процесс может унаследовать канал от сущности, которая создала этот процесс. Способ, которым это делается, зависит от операционной системы, как и возможные сущности, к которым может быть подключен канал. Например, в системах 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
© 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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/nio/channels/spi/SelectorProvider.html