Spec-Zone.ru › OpenJDK 21

Класс 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()
Указывает, открыт ли этот канал.

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

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

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

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 - Если поток, заблокированный в операции ввода-вывода, был прерван

© 1993, 2023, 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/21/docs/api/java.base/java/nio/channels/spi/AbstractInterruptibleChannel.html

Spec-Zone.ru

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