Класс 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
Конструкторы
| Модификатор | Конструктор | Описание |
|---|---|---|
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.
Первый вызов этого метода находит объект провайдера по умолчанию следующим образом:
Если системная переменная
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- Если произошла ошибка ввода-вывода - 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