Интерфейс AsynchronousChannel
- Все суперинтерфейсы:
AutoCloseable, Channel, Closeable
- Все известные подинтерфейсы:
AsynchronousByteChannel
- Все известные классы-реализации:
AsynchronousFileChannel, AsynchronousServerSocketChannel, AsynchronousSocketChannel
public interface AsynchronousChannel extends Channel
Future<V> operation(...)void operation(... A attachment,
CompletionHandler<V,? super A> handler)
CompletionHandler. В первой форме методы, определённые интерфейсом Future, можно использовать для проверки завершения операции, ожидания её завершения и получения результата. Во второй форме для обработки результата операции ввода-вывода после её завершения или сбоя вызывается CompletionHandler.
Канал, реализующий этот интерфейс, является асинхронно закрываемым: если на канале выполняется операция ввода-вывода и вызывается метод close канала, операция ввода-вывода завершается с исключением AsynchronousCloseException.
Асинхронные каналы безопасно использовать из нескольких одновременно работающих потоков. Некоторые реализации каналов могут поддерживать одновременное чтение и запись, но не допускают одновременного выполнения более одной операции чтения и одной операции записи.
Отмена
Интерфейс Future определяет метод cancel для отмены выполнения. В результате все потоки, ожидающие результат операции ввода-вывода, выбрасывают CancellationException. Возможность отмены базовой операции ввода-вывода во многом зависит от реализации и поэтому не специфицирована. Если в результате отмены канал или связанная с ним сущность оказывается в несогласованном состоянии, канал переводится в зависящее от реализации состояние ошибки, которое предотвращает дальнейшие попытки инициировать операции ввода-вывода, аналогичные отменённой операции. Например, если отменена операция чтения, но реализация не может гарантировать, что из канала не были прочитаны байты, канал переводится в состояние ошибки; дальнейшие попытки инициировать операцию read приводят к выбрасыванию неспецифицированного исключения времени выполнения. Аналогично, если отменена операция записи, но реализация не может гарантировать, что в канал не были записаны байты, последующие попытки инициировать write завершаются неспецифицированным исключением времени выполнения.
Если метод cancel вызывается с параметром
mayInterruptIfRunning, установленным в true, операция ввода-вывода может быть прервана закрытием канала. В этом случае все потоки, ожидающие результат операции ввода-вывода, выбрасывают CancellationException, а все другие выполняющиеся операции ввода-вывода на канале завершаются с исключением AsynchronousCloseException.
Если метод cancel вызывается для отмены операций чтения или записи, рекомендуется отбрасывать все буферы, использованные в этих операциях ввода-вывода, либо следить за тем, чтобы к буферам не обращались, пока канал остаётся открытым.
- С версии:
- 1.7
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
void |
close() |
Закрывает этот канал. |
Подробное описание методов
close
void close() throws IOException
Все выполняющиеся асинхронные операции на этом канале завершаются с исключением AsynchronousCloseException. После закрытия канала дальнейшие попытки инициировать асинхронные операции ввода-вывода немедленно завершаются с причиной ClosedChannelException.
В остальном этот метод ведёт себя точно так, как указано в интерфейсе Channel.
- Определено в:
-
closeв интерфейсеAutoCloseable - Определено в:
-
closeв интерфейсеChannel - Определено в:
-
closeв интерфейсеCloseable - Выбрасывает:
-
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.