Spec-Zone.ru › OpenJDK 17

Интерфейс AsynchronousChannel

Все суперинтерфейсы:
AutoCloseable, Channel, Closeable
Все известные подинтерфейсы:
AsynchronousByteChannel
Все известные реализующие классы:
AsynchronousFileChannel, AsynchronousServerSocketChannel, AsynchronousSocketChannel
public interface AsynchronousChannel extends Channel
Канал, поддерживающий асинхронные операции ввода-вывода. Асинхронные операции ввода-вывода, как правило, принимают одну из двух форм:
  1. Future<V> operation(...)
  2. void operation(... A attachment, CompletionHandler<V,? super A> handler)
где операция — это название операции ввода-вывода (например, чтение или запись), V — тип результата операции ввода-вывода, а A — тип объекта, прикрепленного к операции ввода-вывода, для предоставления контекста при обработке результата. Прикрепление важно в тех случаях, когда используется бессостоятельный CompletionHandler для обработки результата многих операций ввода-вывода.

В первом случае могут использоваться методы, определенные интерфейсом Future, чтобы проверить, завершилась ли операция, дождаться её завершения и получить результат. Во втором случае вызывается CompletionHandler, чтобы обработать результат операции ввода-вывода при ее завершении или ошибке.

Канал, реализующий этот интерфейс, является закрываемым асинхронно: если операция ввода-вывода выполняется в канале, а метод close канала вызывается, то операция ввода-вывода завершается с исключением AsynchronousCloseException.

Асинхронные каналы безопасны для использования несколькими потоками. Некоторые реализации каналов могут поддерживать одновременное чтение и запись, но могут не допускать более одной операции чтения и одной операции записи, выполняемой одновременно.

Отмена

Интерфейс Future определяет метод cancel для отмены выполнения. Это приводит к тому, что все потоки, ожидающие результата операции ввода-вывода, выбрасывают CancellationException. Возможность отмены базовой операции ввода-вывода сильно зависит от реализации и поэтому не определена. Если отмена приводит к тому, что канал или сущность, к которой он подключен, оказывается в несогласованном состоянии, то канал переводится в состояние ошибки, зависящее от реализации, что предотвращает дальнейшие попытки инициировать операции ввода-вывода, аналогичные операции, которая была отменена. Например, если операция чтения отменена, но реализация не может гарантировать, что байты не были прочитаны из канала, то она переводит канал в состояние ошибки; дальнейшие попытки инициировать read операцию приведут к тому, что будет брошено неопределенное исключение времени выполнения. Аналогично, если операция записи отменена, но реализация не может гарантировать, что байты не были записаны в канал, последующие попытки инициировать write завершатся с неопределенным исключением времени выполнения.

Если метод cancel вызывается с параметром mayInterruptIfRunning установленным в true, то операция ввода-вывода может быть прервана закрытием канала. В этом случае все потоки, ожидающие результата операции ввода-вывода, выбрасывают CancellationException, и все другие операции ввода-вывода, выполняющиеся в канале, завершаются с исключением AsynchronousCloseException.

При вызове метода cancel для отмены операций чтения или записи рекомендуется удалить все буферы, используемые в операциях ввода-вывода, или позаботиться о том, чтобы к буферам не было доступа, пока канал остается открытым.

Since:
1.7

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

Модификатор и тип Метод Описание
void close()
Закрывает этот канал.

Методы, объявленные в интерфейсе java.nio.channels.Channel

isOpen

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

close

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

Любые выполняемые асинхронные операции в этом канале завершатся исключением AsynchronousCloseException. После закрытия канала дальнейшие попытки инициировать асинхронные операции ввода-вывода завершатся немедленно с исключением ClosedChannelException.

Этот метод в остальном ведет себя точно так же, как указано в интерфейсе Channel.

Specified by:
close в интерфейсе AutoCloseable
Specified by:
close в интерфейсе Channel
Specified by:
close в интерфейсе Closeable
Throws:
IOException - Если возникает ошибка ввода-вывода

© 1993, 2021, 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/17/docs/api/java.base/java/nio/channels/AsynchronousChannel.html

Spec-Zone.ru

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