Spec-Zone.ru › OpenJDK 24

Интерфейс 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 для отмены операций чтения или записи рекомендуется либо удалить все буферы, используемые в операциях ввода-вывода, либо позаботиться о том, чтобы к буферам не было доступа, пока канал остается открытым.

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, 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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/nio/channels/AsynchronousChannel.html

Spec-Zone.ru

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