Spec-Zone.ru › OpenJDK 27

Интерфейс 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
Модификатор и тип Метод Описание
boolean isOpen()
Сообщает, открыт ли этот канал.

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

close

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

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

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

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

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по 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