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}<V> <em>operation</em>(<em>...</em>)
</li><li li>
void <em>operation</em>(<em>...</em> A attachment, {@link
CompletionHandler}<V,? super A> handler)
</li></ol>
где операция — это имя операции ввода-вывода (например, чтения или записи), V — тип результата операции ввода-вывода, а A — тип объекта, присоединенного к операции ввода-вывода для предоставления контекста при использовании результата. Вложение важно в тех случаях, когда <для использования результатов многих операций ввода-вывода используется состояние без>><CompletionHandler
em.
В первой форме методы, определенные интерфейсомFuture Future
, можно использовать для проверка завершения операции, ожидания ее завершения и получения результата. Во второй форме вызывается для CompletionHandler
использования результата операции ввода-вывода при завершении или сбое.
Канал, реализующий этот интерфейс, является <>асинхронно закрываемым</em>: если операция ввода-вывода в канале не выполнена #close close
и вызывается метод канала, операция ввода-вывода завершается сбоем с исключением AsynchronousCloseException
.
Асинхронные каналы безопасны для использования несколькими параллельными потоками. Некоторые реализации канала могут поддерживать параллельное чтение и запись, но не могут допускать выполнения нескольких операций чтения и одной операции записи в любой момент времени.
<h2>Отмена</h2>
Интерфейс Future
определяет метод для отмены Future#cancel cancel
выполнения. Это приводит к тому, что все потоки, ожидающие результата операции ввода-вывода, вызывают исключение java.util.concurrent.CancellationException
. Возможность отмены базовой операции ввода-вывода зависит от реализации и поэтому не указана. Если отмена оставляет канал или сущность, к которой он подключен, в несогласованном состоянии, канал помещается в конкретное <для реализации состояние< ошибки/>em>, которое предотвращает дальнейшие попытки инициировать операции ввода-вывода, аналогичные отмененной операции. Например, если операция чтения отменена, но реализация не может гарантировать, что байты не были считаны из канала, то канал переводится в состояние ошибки; дальнейшие попытки инициировать read
операцию приводят к возникновению неуказанным исключением среды выполнения. Аналогичным образом, если операция записи отменена, но реализация не может гарантировать, что байты не были записаны в канал, последующие попытки инициировать завершится ошибкой write
с неуказанным исключением среды выполнения.
Future#cancel cancel
Если метод вызывается с параметром , для которого mayInterruptIfRunning
задано значение true
, операция ввода-вывода может быть прервана путем закрытия канала. В этом случае все потоки, ожидающие результата операции ввода-вывода, вызывают исключение CancellationException
, а все другие операции ввода-вывода, невыполненные в канале, завершают с исключением AsynchronousCloseException
.
cancel
Если метод вызывается для отмены операций чтения или записи, рекомендуется отменить все буферы, используемые в операциях ввода-вывода, или обеспечить отсутствие доступа к буферам, пока канал остается открытым.
Добавлено в версии 1.7.
Документация по Java для java.nio.channels.AsynchronousChannel
.
Части этой страницы являются изменениями, основанными на работе, созданной и совместно используемой проектом Android и используемой в соответствии с условиями, Creative Commons 2.5 Attribution License.
Свойства
Handle |
Возвращает значение JNI базового объекта Android. (Унаследовано от IJavaObject) |
IsOpen |
Возвращает значение true, если этот канал открыт. (Унаследовано от IChannel) |
JniIdentityHashCode |
Возвращает значение |
JniManagedPeerState |
Состояние управляемого однорангового узла. (Унаследовано от IJavaPeerable) |
JniPeerMembers |
Поддержка доступа к членам и вызова. (Унаследовано от IJavaPeerable) |
PeerReference |
Возвращает экземпляр JniObjectReference объекта Java, заключенный в оболочку. (Унаследовано от IJavaPeerable) |
Методы
Close() |
Закрывает этот канал. |
Disposed() |
Вызывается при удалении экземпляра. (Унаследовано от IJavaPeerable) |
DisposeUnlessReferenced() |
Если отсутствуют невыполненные ссылки на этот экземпляр, вызывает метод |
Finalized() |
Вызывается при завершении работы экземпляра. (Унаследовано от IJavaPeerable) |
SetJniIdentityHashCode(Int32) |
Задайте значение, возвращаемое . |
SetJniManagedPeerState(JniManagedPeerStates) |
Канал, поддерживающий асинхронные операции ввода-вывода. (Унаследовано от IJavaPeerable) |
SetPeerReference(JniObjectReference) |
Задайте значение, возвращаемое . |
UnregisterFromRuntime() |
Отмените регистрацию этого экземпляра, чтобы среда выполнения не возвращала его из будущих Java.Interop.JniRuntime+JniValueManager.PeekValue вызовов. (Унаследовано от IJavaPeerable) |
Методы расширения
JavaCast<TResult>(IJavaObject) |
Выполняет преобразование типа, проверенного средой выполнения Android. |
JavaCast<TResult>(IJavaObject) |
Канал, поддерживающий асинхронные операции ввода-вывода. |
GetJniTypeName(IJavaPeerable) |
Канал, поддерживающий асинхронные операции ввода-вывода. |