Spec-Zone.ru › OpenJDK 25

Интерфейс 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)
где operation — имя операции ввода-вывода (например, чтение или запись), V — тип результата операции ввода-вывода, а A — тип объекта, присоединённого к операции ввода-вывода для предоставления контекста при обработке результата. Присоединение объекта важно в случаях, когда для обработки результатов многих операций ввода-вывода используется не сохраняющий состояние CompletionHandler.

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

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

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

Отмена

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

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

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

С версии:
1.7

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

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

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

isOpen

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

close

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

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

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

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

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, включая обзоры концепций, определения терминов, обходные решения и рабочие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторские права © 1993, 2025, 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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/nio/channels/AsynchronousChannel.html

Spec-Zone.ru

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