Spec-Zone.ru › OpenJDK 27

Класс AbstractInterruptibleChannel

java.lang.Object
java.nio.channels.spi.AbstractInterruptibleChannel
Все реализуемые интерфейсы:
Closeable, AutoCloseable, Channel, InterruptibleChannel
Прямые известные подклассы:
FileChannel, SelectableChannel
public abstract class AbstractInterruptibleChannel extends Object implements Channel, InterruptibleChannel
Базовый класс реализации каналов, допускающих прерывание.

Этот класс инкапсулирует низкоуровневые механизмы, необходимые для реализации асинхронного закрытия и прерывания каналов. Конкретный класс канала должен вызывать методы begin и end соответственно перед и после вызова операции ввода-вывода, которая может блокироваться на неопределённое время. Чтобы гарантировать, что метод end всегда вызывается, эти методы следует использовать в блоке try ... finally:

    boolean completed = false;
    try {
        begin();
        completed = ...;    // Perform blocking I/O operation
        return ...;         // Return result
    } finally {
        end(completed);
    }

Аргумент completed метода end указывает, завершилась ли фактически операция ввода-вывода, то есть оказала ли она какое-либо влияние, видимое для вызывающего её кода. Например, в случае операции чтения байтов этот аргумент должен иметь значение true тогда и только тогда, когда некоторые байты действительно были переданы в целевой буфер вызывающего кода.

Конкретный класс канала также должен реализовать метод implCloseChannel таким образом, чтобы при его вызове, когда другой поток заблокирован в нативной операции ввода-вывода на этом канале, эта операция немедленно завершалась либо выбрасывая исключение, либо возвращаясь обычным образом. Если поток прерван или канал, на котором он заблокирован, асинхронно закрыт, метод end канала выбросит соответствующее исключение.

Этот класс выполняет синхронизацию, необходимую для реализации спецификации Channel. Реализациям метода implCloseChannel не требуется синхронизироваться с другими потоками, которые могут пытаться закрыть канал.

Начиная с:
1.4

Краткое описание конструкторов

AbstractInterruptibleChannel()
Модификатор Конструктор Описание
protected
Инициализирует новый экземпляр этого класса.

Краткое описание методов

Модификатор и тип Метод Описание
protected final void begin()
Помечает начало операции ввода-вывода, которая может блокироваться на неопределённое время.
final void close()
Закрывает этот канал.
protected final void end(boolean completed)
Помечает завершение операции ввода-вывода, которая может блокироваться на неопределённое время.
protected abstract void implCloseChannel()
Закрывает этот канал.
final boolean isOpen()
Показывает, открыт ли этот канал.

Методы, объявленные в классе Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создаёт и возвращает копию этого объекта.
boolean equals(Object obj)
Указывает, равен ли какой-либо другой объект этому объекту.
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(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо истечения определённого промежутка реального времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо истечения определённого промежутка реального времени.

Подробное описание конструкторов

AbstractInterruptibleChannel

protected AbstractInterruptibleChannel()
Инициализирует новый экземпляр этого класса.

Подробное описание методов

close

public final void close() throws IOException
Закрывает этот канал.

Если канал уже закрыт, этот метод немедленно возвращает управление. В противном случае он помечает канал как закрытый, а затем вызывает метод implCloseChannel для завершения операции закрытия.

Определено в:
close в интерфейсе AutoCloseable
Определено в:
close в интерфейсе Channel
Определено в:
close в интерфейсе Closeable
Определено в:
close в интерфейсе InterruptibleChannel
Выбрасывает:
IOException — если возникает ошибка ввода-вывода

implCloseChannel

protected abstract void implCloseChannel() throws IOException
Закрывает этот канал.

Этот метод вызывается методом close для выполнения фактического закрытия канала. Метод вызывается только в том случае, если канал ещё не был закрыт, и вызывается не более одного раза.

Реализация этого метода должна обеспечить немедленный возврат любого другого потока, заблокированного в операции ввода-вывода на этом канале, либо выбросив исключение, либо завершившись обычным образом.

Выбрасывает:
IOException — если при закрытии канала возникает ошибка ввода-вывода

isOpen

public final boolean isOpen()
Описание скопировано из интерфейса: Channel
Показывает, открыт ли этот канал.
Определено в:
isOpen в интерфейсе Channel
Возвращает:
true тогда и только тогда, когда этот канал открыт

begin

protected final void begin()
Помечает начало операции ввода-вывода, которая может блокироваться на неопределённое время.

Этот метод следует вызывать вместе с методом end в блоке try ... finally, как показано выше, чтобы реализовать асинхронное закрытие и прерывание этого канала.

end

protected final void end(boolean completed) throws AsynchronousCloseException
Помечает завершение операции ввода-вывода, которая может блокироваться на неопределённое время.

Этот метод следует вызывать вместе с методом begin в блоке try ... finally, как показано выше, чтобы реализовать асинхронное закрытие и прерывание этого канала.

Параметры:
completed — true тогда и только тогда, когда операция ввода-вывода успешно завершилась, то есть оказала какое-либо влияние, видимое вызывающему её коду
Выбрасывает:
AsynchronousCloseException — если канал был асинхронно закрыт
ClosedByInterruptException — если поток, заблокированный в операции ввода-вывода, был прерван

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, концептуальные обзоры, определения терминов, обходные решения и работающие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторские права © 1993, 2026, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API