Класс SelectorProvider
public abstract class SelectorProvider extends Object
Поставщик селекторов — это конкретный подкласс данного класса, имеющий конструктор без аргументов и реализующий указанные ниже абстрактные методы. Для каждого вызова виртуальной машины Java существует единственный экземпляр поставщика по умолчанию для всей системы, который возвращается методом provider. При первом вызове этого метода поставщик по умолчанию определяется согласно описанию ниже.
Поставщик по умолчанию для всей системы используется статическими методами open классов DatagramChannel, Pipe, Selector, ServerSocketChannel и SocketChannel. Он также используется методом System.inheritedChannel(). Программа может использовать поставщик, отличный от поставщика по умолчанию: для этого нужно создать его экземпляр и напрямую вызвать методы open, определённые в этом классе.
Все методы этого класса безопасны для использования несколькими параллельными потоками.
- Начиная с:
- 1.4
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
protected |
Инициализирует новый экземпляр этого класса. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
Channel |
inheritedChannel() |
Возвращает канал, унаследованный от сущности, создавшей эту виртуальную машину Java. |
abstract DatagramChannel |
openDatagramChannel() |
Открывает канал датаграмм. |
abstract DatagramChannel |
openDatagramChannel |
Открывает канал датаграмм. |
abstract Pipe |
openPipe() |
Открывает канал pipe. |
abstract AbstractSelector |
openSelector() |
Открывает селектор. |
abstract ServerSocketChannel |
openServerSocketChannel() |
Открывает канал серверного сокета. |
ServerSocketChannel |
openServerSocketChannel |
Открывает канал серверного сокета. |
abstract SocketChannel |
openSocketChannel() |
Открывает канал сокета. |
SocketChannel |
openSocketChannel |
Открывает канал сокета. |
static SelectorProvider |
provider() |
Возвращает поставщик селекторов, используемый по умолчанию для всей системы при данном вызове виртуальной машины Java. |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создаёт и возвращает копию этого объекта. |
boolean |
equals |
Указывает, является ли другой объект «равным» этому объекту. |
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 |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова метода notify или interrupt, либо до истечения заданного промежутка реального времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова метода notify или interrupt, либо до истечения заданного промежутка реального времени. |
Подробное описание конструкторов
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
- Возвращает:
- Новый канал 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, можно запустить таким образом, чтобы он унаследовал канал от сущности, создавшей этот процесс. Способ, которым это выполняется, зависит от системы; от системы также зависит, с какими сущностями может быть связан канал. Например, в системах 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.