NIO: síncronas e assíncronas não-tampão de bloqueio tampão de bloqueio

A introdução de NIO

Múltipla de alta velocidade de não-bloqueio rede de canais IO

Síncrona e assíncrona

O conceito é fazer com que o seu caminho em termos de procedimentos para os resultados operacionais:

Sincronização: Antes de obter nenhum resultado ou por meio de votação constantemente perguntando se um resultado, não voltará antes de obter os resultados

Asynchronous: O chamador emitido após após a chamada, um resultado direto de não retorno, espera de chamada a ser produzido pela chamada de notificação do resultado do estado tenha sido concluída, os resultados retornados pela função callback

 

O bloqueio e não bloqueio

Bloqueio: Quando o processo de implementação, os resultados não têm sido antes, este processo está temporariamente suspenso, não fazer nada

Non-blocking: Antes de você não obter os resultados, o fio não vai parar a operação, que não bloqueia o segmento atual;

 

classe tampão (buffer)

Conceito: Tampão é um objeto, ele tem alguns tipos básicos de pacote array. NIO começou com Channel ( canal ) é através
de buffer para ler e gravar dados. (É a essência da matriz)

Use etapas

Uso Tampão geralmente seguir os dados de escrita seguinte quatro etapas:
1. O dados são escritos para Tamp ;
2. chamada aleta () Método; (o limite = posição, posição = 0, as devoluções Mark) para alterar o modo de escrita tampão
3. a partir de tampão ler dados;
4. chamadas limpar () método ou um compact () método. (Claro: Limite = paracity (capacidade), posição = 0, as devoluções Mark)

Tampão tipo de

Tampão ter a seguinte principal:
ByteBuffer
CharBuffer
DoubleBuffer
FloatBuffer
IntBuffer
LongBuffer
ShortBuffe

ByteBuffer classe interna encapsula um byte [] matriz, e a matriz pode ser operado por um número de métodos.
Criar um ByteBuffer objetos
maneira:

Criar um buffer na pilha: a repartição da capacidade (int Capacity) tampão Capacidade
criado na pilha tampão chamado: tampão indireta
maneira:

Na memória do sistema para criar um buffer: allocatDirect (int Capacity)

Na memória do sistema para criar um buffer conhecido como: buffers diretos
são criados e destruídos eficiência tampão indireta do que o buffer direta
trabalho tampão indireta menos eficiente do que buffers diretos
três maneiras:

Através da matriz para criar um tampão: envoltório (byte [] arr)
tampão zona é criada desta forma: tampão indirecta

Adicionar elementos ao tampão

  1. o público ByteBuffer PUT (byte B) : para adicionar dados para a posição disponível atualmente.
  2. o público ByteBuffer PUT (byte [] byteArray A) : Para a posição de um actualmente disponíveis byte [] matriz
  3. o ByteBuffer pública PUT (byte [] byteArray A, int compensar int len, ) : adição de um byte [] parte de uma matriz

 

tampão vários parâmetros

Capacidade -capacidade
Tampão de capacidade (capacidade) meios: Tampão número máximo de elementos pode ser contida. Define tampão , a capacidade não é
variável.

Restrição -limit
limite limite refere-se a: um primeiro elemento não deve ler ou escrever o índice de índice. Tampão limite (limite) não pode ser negativo e
obrigação não é maior do que a capacidade.
Existem dois métodos relacionados:
limite int público () : Gets limite deste buffer.
Tampão limite pública (int newLimit)
: Definir limite deste tampão .

Localização -position
posição posição significa: índice escrito atualmente. Uma posição não inferior a 0 e não maior do que " limite " .
Existem dois métodos relacionados:
posição int público () : Retorna o índice posição atual podem ser escritas.
posição tampão público (o p-int)
: alterar o índice de posição de gravação atual.

 

Marcar Mark
marca marca meios: ao chamar tampão de reposição () quando o processo vai tamponar a posição de localização é reposta a este índice. Não
é 0 , não pode exceder posição .
métodos relacionados:
pública Buffer de marca () : Esta bandeira é ajustado à corrente tampão posição localização.

 

método comum

Outros métodos
int pública restante () : Obter posição e limitar o número de elementos entre.
pública isReadOnly boolean () : Obter o buffer atual é somente leitura.
pública isDirect boolean () : Obtém o buffer atual é um buffer direta.

# Método comum de
buffer pública a Clear () : redução do Estado buffer.
A posição é definida como: 0
para limitar o limite à capacidade Capacidade ;
bandeira descarte Mark .
Tampão pública Flip () : Estreito limite de gama.
O limite para a actual posição posição;
a actual posição de posição é definido como 0 ;
bandeira de descarte.
Tampão rebobinar pública () : Este tampão retrocesso.
A posição posição é conjunto: 0
restrições limitar inalterado.
bandeira de descarte.

 

Acho que você gosta

Origin www.cnblogs.com/xiaojians/p/12631503.html
Recomendado
Clasificación