Класс 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() Создаёт канал типа pipe. |
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 Создаёт канал типа 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. Канал датаграмм, по крайней мере изначально, находится в режиме блокировки и связан с адресом сокета.
В дополнение к сетевым каналам, описанным выше, этот метод может возвращать другие типы каналов в будущем.
Первый вызов этого метода создает канал, который возвращается. Последующие вызовы этого метода возвращают тот же канал.
- Возвращает:
- Унаследованный канал, если есть, в противном случае
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.