Поделиться через


IAsynchronousChannel Интерфейс

Определение

Канал, поддерживающий асинхронные операции ввода-вывода.

[Android.Runtime.Register("java/nio/channels/AsynchronousChannel", "", "Java.Nio.Channels.IAsynchronousChannelInvoker", ApiSince=26)]
public interface IAsynchronousChannel : IDisposable, Java.Interop.IJavaPeerable, Java.Nio.Channels.IChannel
[<Android.Runtime.Register("java/nio/channels/AsynchronousChannel", "", "Java.Nio.Channels.IAsynchronousChannelInvoker", ApiSince=26)>]
type IAsynchronousChannel = interface
    interface IChannel
    interface ICloseable
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
Производный
Атрибуты
Реализации

Комментарии

Канал, поддерживающий асинхронные операции ввода-вывода. Асинхронные операции ввода-вывода обычно принимают одну из двух форм:

<ol><li>

{@link Future}&lt;V&gt; <em>operation</em>(<em>...</em>)

</li li><>

void <em>operation</em>(<em>...</em> A attachment, {@link
              CompletionHandler}&lt;V,? super A&gt; handler)

</li></ol>

Где операция — это имя операции ввода-вывода (например, чтение или запись), V — это тип операции ввода-вывода, а тип объекта, присоединенного к операции ввода-вывода, для предоставления контекста при использовании результата. Вложение важно для случаев, когда <>эм-состояние меньше</em>CompletionHandler используется для использования результата многих операций ввода-вывода.

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

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

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

<h2 Отмена</h2>>

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

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

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

Добавлено в версии 1.7.

Документация по Java для java.nio.channels.AsynchronousChannel.

Части этой страницы — это изменения на основе работы, созданной и общей проектом с открытым исходным кодом Android и используемой в соответствии с условиями, описанными в лицензии Creative Commons 2.5 Attribution.

Свойства

Handle

Возвращает значение JNI базового объекта Android.

(Унаследовано от IJavaObject)
IsOpen

Возвращает значение true, если этот канал открыт.

(Унаследовано от IChannel)
JniIdentityHashCode

Возвращает значение java.lang.System.identityHashCode() для упаковаемого экземпляра.

(Унаследовано от IJavaPeerable)
JniManagedPeerState

Состояние управляемого однорангового узла.

(Унаследовано от IJavaPeerable)
JniPeerMembers

Поддержка доступа к членам и вызовов.

(Унаследовано от IJavaPeerable)
PeerReference

JniObjectReference Возвращает экземпляр объекта Java в оболочке.

(Унаследовано от IJavaPeerable)

Методы

Close()

Закрывает этот канал.

Disposed()

Вызывается при удалении экземпляра.

(Унаследовано от IJavaPeerable)
DisposeUnlessReferenced()

Если нет невыполненных ссылок на этот экземпляр, то вызывается Dispose(); в противном случае ничего не делает.

(Унаследовано от IJavaPeerable)
Finalized()

Вызывается при завершении экземпляра.

(Унаследовано от IJavaPeerable)
SetJniIdentityHashCode(Int32)

Задайте значение, возвращаемое JniIdentityHashCode.

(Унаследовано от IJavaPeerable)
SetJniManagedPeerState(JniManagedPeerStates)

Канал, поддерживающий асинхронные операции ввода-вывода.

(Унаследовано от IJavaPeerable)
SetPeerReference(JniObjectReference)

Задайте значение, возвращаемое PeerReference.

(Унаследовано от IJavaPeerable)
UnregisterFromRuntime()

Отмените регистрацию этого экземпляра, чтобы среда выполнения не возвращала ее из будущих Java.Interop.JniRuntime+JniValueManager.PeekValue вызовов.

(Унаследовано от IJavaPeerable)

Методы расширения

JavaCast<TResult>(IJavaObject)

Выполняет преобразование типа, проверяемого средой выполнения Android.

JavaCast<TResult>(IJavaObject)

Канал, поддерживающий асинхронные операции ввода-вывода.

GetJniTypeName(IJavaPeerable)

Канал, поддерживающий асинхронные операции ввода-вывода.

Применяется к