IAsynchronousChannel Interface
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Um canal que oferece suporte a operações de E/S assíncronas.
[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
- Derivado
- Atributos
- Implementações
Comentários
Um canal que oferece suporte a operações de E/S assíncronas. As operações de E/S assíncronas geralmente assumem uma das duas formas:
<ol><li>
{@link Future}<V> <em>operation</em>(<em>...</em>)
</li><li>
void <em>operation</em>(<em>...</em> A attachment, {@link
CompletionHandler}<V,? super A> handler)
</li></ol>
onde operação é o nome da operação de E/S (leitura ou gravação, por exemplo), V é o tipo de resultado da operação de E/S e A é o tipo de objeto anexado à operação de E/S para fornecer contexto ao consumir o resultado. O anexo é importante para casos em que um <em>state-less</em>CompletionHandler
é usado para consumir o resultado de muitas operações de E/S.
No primeiro formulário, os métodos definidos pela Future Future
interface podem ser usados para verificar se a operação foi concluída, aguardar sua conclusão e recuperar o resultado. No segundo formulário, a CompletionHandler
é chamado para consumir o resultado da operação de E/S quando ela é concluída ou falha.
Um canal que implementa essa interface é <em>assíncronamente closeable</em>: Se uma operação de E/S estiver pendente no canal e o método do canal for chamado, a operação de E/S #close close
falhará com a exceção AsynchronousCloseException
.
Os canais assíncronos são seguros para uso por vários threads simultâneos. Algumas implementações de canal podem oferecer suporte a leitura e gravação simultâneas, mas podem não permitir que mais de uma operação de leitura e uma gravação sejam pendentes em um determinado momento.
<h2>Cancelamento</h2>
A Future
interface define o método para cancelar a Future#cancel cancel
execução. Isso faz com que todos os threads aguardando o resultado da operação de E/S lancem java.util.concurrent.CancellationException
. Se a operação de E/S subjacente pode ser cancelada é altamente específico da implementação e, portanto, não especificado. Quando o cancelamento deixa o canal, ou a entidade à qual ele está conectado, em um estado inconsistente, o canal é colocado em um estado< de erro específico da>implementação</em> que impede novas tentativas de iniciar operações de E/S semelhantes à operação que foi cancelada. Por exemplo, se uma operação de leitura for cancelada, mas a implementação não puder garantir que os bytes não foram lidos do canal, ela colocará o canal em um estado de erro; Outras tentativas de iniciar uma read
operação fazem com que uma exceção de tempo de execução não especificada seja lançada. Da mesma forma, se uma operação de gravação for cancelada, mas a implementação não puder garantir que os bytes não tenham sido gravados no canal, as tentativas subsequentes de iniciar um write
falharão com uma exceção de tempo de execução não especificada.
Quando o Future#cancel cancel
método é chamado com o mayInterruptIfRunning
parâmetro definido para true
, em seguida, a operação de E/S pode ser interrompida fechando o canal. Nesse caso, todos os threads aguardando o resultado da operação de E/S lançam CancellationException
e quaisquer outras operações de E/S pendentes no canal são concluídas, com exceção AsynchronousCloseException
de .
Quando o cancel
método é chamado para cancelar operações de leitura ou gravação, é recomendável que todos os buffers usados nas operações de E/S sejam descartados ou que sejam tomados cuidados para garantir que os buffers não sejam acessados enquanto o canal permanece aberto.
Adicionado em 1.7.
Documentação Java para java.nio.channels.AsynchronousChannel
.
Partes desta página são modificações baseadas no trabalho criado e compartilhado pelo Android Open Source Project e usado de acordo com os termos descritos na Creative Commons 2.5 Attribution License.
Propriedades
Handle |
Obtém o valor JNI do objeto Android subjacente. (Herdado de IJavaObject) |
IsOpen |
Retorna true se esse canal estiver aberto. (Herdado de IChannel) |
JniIdentityHashCode |
Retorna o valor de |
JniManagedPeerState |
Estado do par gerenciado. (Herdado de IJavaPeerable) |
JniPeerMembers |
Acesso de membros e suporte à invocação. (Herdado de IJavaPeerable) |
PeerReference |
Retorna uma JniObjectReference das instâncias do objeto Java encapsulado. (Herdado de IJavaPeerable) |
Métodos
Close() |
Fecha este canal. |
Disposed() |
Chamado quando a instância tiver sido descartada. (Herdado de IJavaPeerable) |
DisposeUnlessReferenced() |
Se não houver referências pendentes a este caso, então chame |
Finalized() |
Chamado quando a instância tiver sido finalizada. (Herdado de IJavaPeerable) |
SetJniIdentityHashCode(Int32) |
Defina o valor retornado por |
SetJniManagedPeerState(JniManagedPeerStates) |
Um canal que oferece suporte a operações de E/S assíncronas. (Herdado de IJavaPeerable) |
SetPeerReference(JniObjectReference) |
Defina o valor retornado por |
UnregisterFromRuntime() |
Cancele o registro dessa instância para que o tempo de execução não a retorne de chamadas futuras Java.Interop.JniRuntime+JniValueManager.PeekValue . (Herdado de IJavaPeerable) |
Métodos de Extensão
JavaCast<TResult>(IJavaObject) |
Executa uma conversão de tipo verificada em tempo de execução do Android. |
JavaCast<TResult>(IJavaObject) |
Um canal que oferece suporte a operações de E/S assíncronas. |
GetJniTypeName(IJavaPeerable) |
Um canal que oferece suporte a operações de E/S assíncronas. |