Класс AbstractSelectableChannel
- Все реализуемые интерфейсы:
Closeable, AutoCloseable, Channel, InterruptibleChannel
- Прямые известные подклассы:
DatagramChannel, Pipe.SinkChannel, Pipe.SourceChannel, SctpChannel, SctpMultiChannel, SctpServerChannel, ServerSocketChannel, SocketChannel
public abstract class AbstractSelectableChannel extends SelectableChannel
Этот класс определяет методы, обеспечивающие регистрацию, отмену регистрации и закрытие каналов. Он хранит текущий режим блокировки этого канала, а также текущий набор его ключей выбора. Класс выполняет всю синхронизацию, необходимую для реализации спецификации SelectableChannel. Реализациям защищённых абстрактных методов, определённых в этом классе, не требуется синхронизироваться с другими потоками, которые могут выполнять те же операции.
- Начиная с версии:
- 1.4
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
protected |
Инициализирует новый экземпляр этого класса. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
final Object |
blockingLock() |
Возвращает объект, на котором синхронизируются методы configureBlocking и register. |
final SelectableChannel |
configureBlocking |
Изменяет режим блокировки этого канала. |
protected final void |
implCloseChannel() |
Закрывает этот канал. |
protected abstract void |
implCloseSelectableChannel() |
Закрывает этот канал, допускающий выбор. |
protected abstract void |
implConfigureBlocking |
Изменяет режим блокировки этого канала. |
final boolean |
isBlocking() |
Определяет, блокируется ли каждая операция ввода-вывода на этом канале до её завершения. |
final boolean |
isRegistered() |
Определяет, зарегистрирован ли этот канал в данный момент в каком-либо селекторе. |
final SelectionKey |
keyFor |
Возвращает ключ, представляющий регистрацию канала в указанном селекторе. |
final SelectorProvider |
provider() |
Возвращает провайдер, создавший этот канал. |
final SelectionKey |
register |
Регистрирует этот канал в указанном селекторе и возвращает ключ выбора. |
Методы, объявленные в классе SelectableChannel
register, validOps | Модификатор и тип | Метод | Описание |
|---|---|---|
final SelectionKey |
register |
Регистрирует этот канал в указанном селекторе и возвращает ключ выбора. |
abstract int |
validOps() |
Возвращает набор операций, определяющий операции, поддерживаемые этим каналом. |
Методы, объявленные в классе AbstractInterruptibleChannel
begin, close, end, isOpen | Модификатор и тип | Метод | Описание |
|---|---|---|
protected final void |
begin() |
Отмечает начало операции ввода-вывода, которая может блокироваться неограниченно долго. |
final void |
close() |
Закрывает этот канал. |
protected final void |
end |
Отмечает окончание операции ввода-вывода, которая может блокироваться неограниченно долго. |
final boolean |
isOpen() |
Определяет, открыт ли этот канал. |
Методы, объявленные в классе 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 или прерывания. |
final void |
wait |
Приостанавливает выполнение текущего потока до его пробуждения, обычно в результате вызова notify или прерывания, либо до истечения заданного промежутка реального времени. |
final void |
wait |
Приостанавливает выполнение текущего потока до его пробуждения, обычно в результате вызова notify или прерывания, либо до истечения заданного промежутка реального времени. |
Подробное описание конструкторов
AbstractSelectableChannel
protected AbstractSelectableChannel(SelectorProvider provider)
- Параметры:
-
provider— провайдер, создавший этот канал
Подробное описание методов
provider
public final SelectorProvider provider()
- Указано в:
-
providerв классеSelectableChannel - Возвращает:
- Провайдер, создавший этот канал
isRegistered
public final boolean isRegistered()
SelectableChannelИз-за неизбежной задержки между отменой ключа и отменой регистрации канала канал может оставаться зарегистрированным некоторое время после отмены всех его ключей. Канал также может оставаться зарегистрированным некоторое время после его закрытия.
- Указано в:
-
isRegisteredв классеSelectableChannel - Возвращает:
-
trueтогда и только тогда, когда этот канал зарегистрирован
keyFor
public final SelectionKey keyFor(Selector sel)
SelectableChannel- Указано в:
-
keyForв классеSelectableChannel - Параметры:
-
sel— селектор - Возвращает:
- Ключ, возвращённый при последней регистрации этого канала в указанном селекторе, или
null, если этот канал в данный момент не зарегистрирован в данном селекторе
register
public final SelectionKey register(Selector sel, int ops, Object att) throws ClosedChannelException
Сначала этот метод проверяет, открыт ли канал и допустим ли указанный начальный набор интересующих операций.
Если этот канал уже зарегистрирован в указанном селекторе, возвращается ключ выбора, представляющий эту регистрацию, после установки для него указанного набора интересующих операций.
В противном случае этот канал ещё не зарегистрирован в указанном селекторе, поэтому вызывается метод register селектора с удержанием соответствующих блокировок. Полученный ключ добавляется в набор ключей этого канала перед возвратом.
- Указано в:
-
registerв классеSelectableChannel - Параметры:
-
sel— селектор, в котором следует зарегистрировать этот канал -
ops— набор интересующих операций для создаваемого ключа -
att— присоединённый объект для создаваемого ключа; может бытьnull - Возвращает:
- Ключ, представляющий регистрацию этого канала в указанном селекторе
- Выбрасывает:
-
ClosedSelectorException— если селектор закрыт -
IllegalBlockingModeException— если этот канал находится в блокирующем режиме -
IllegalSelectorException— если этот канал создан не тем же провайдером, что и указанный селектор -
CancelledKeyException— если этот канал в данный момент зарегистрирован в указанном селекторе, но соответствующий ключ уже отменён -
IllegalArgumentException— если бит в набореopsне соответствует операции, поддерживаемой этим каналом, то есть еслиset & ~validOps() != 0 -
ClosedChannelException— если этот канал закрыт
implCloseChannel
protected final void implCloseChannel() throws IOException
Этот метод, определённый в классе AbstractInterruptibleChannel и вызываемый методом close, в свою очередь вызывает метод implCloseSelectableChannel для фактического закрытия канала. Затем он отменяет все ключи этого канала.
- Указано в:
-
implCloseChannelв классеAbstractInterruptibleChannel - Выбрасывает:
-
IOException— если при закрытии канала произошла ошибка ввода-вывода
implCloseSelectableChannel
protected abstract void implCloseSelectableChannel() throws IOException
Этот метод вызывается методом close для фактического закрытия канала. Он вызывается только в том случае, если канал ещё не закрыт, и не вызывается более одного раза.
Реализация этого метода должна обеспечить немедленный возврат любого другого потока, заблокированного на операции ввода-вывода с этим каналом, — либо с выбрасыванием исключения, либо с обычным возвратом.
- Выбрасывает:
-
IOException— если произошла ошибка ввода-вывода
isBlocking
public final boolean isBlocking()
SelectableChannelЕсли этот канал закрыт, возвращаемое этим методом значение не определено.
- Указано в:
-
isBlockingв классеSelectableChannel - Возвращает:
-
trueтогда и только тогда, когда этот канал находится в блокирующем режиме
blockingLock
public final Object blockingLock()
SelectableChannelconfigureBlocking и register. Это часто бывает полезно при реализации адаптеров, которым необходимо поддерживать определённый режим блокировки в течение короткого промежутка времени.- Указано в:
-
blockingLockв классеSelectableChannel - Возвращает:
- Объект блокировки режима блокировки
configureBlocking
public final SelectableChannel configureBlocking(boolean block) throws IOException
Если указанный режим блокировки отличается от текущего, этот метод вызывает метод implConfigureBlocking с удержанием соответствующих блокировок для изменения режима.
- Указано в:
-
configureBlockingв классеSelectableChannel - Параметры:
-
block— еслиtrue, этот канал будет переведён в блокирующий режим; еслиfalse, он будет переведён в неблокирующий режим - Возвращает:
- Этот канал, допускающий выбор
- Выбрасывает:
-
ClosedChannelException— если этот канал закрыт -
IOException— если произошла ошибка ввода-вывода
implConfigureBlocking
protected abstract void implConfigureBlocking(boolean block) throws IOException
Этот метод вызывается методом configureBlocking для фактического изменения режима блокировки. Он вызывается только в том случае, если новый режим отличается от текущего.
- Параметры:
-
block— еслиtrue, этот канал будет переведён в блокирующий режим; еслиfalse, он будет переведён в неблокирующий режим - Выбрасывает:
-
IOException— если произошла ошибка ввода-вывода
© 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.