Publicar: um objeto é permitir que ele seja referenciado pelo código fora do escopo atual:
Formas comuns: armazenando referências a objetos para domínios estáticos públicos; referências retornando em métodos não privados; Publicação de instâncias de classe interna, incluindo referências.
Escape: publique o objeto quando não estiver pronto.
Não deixe essa referência escapar do construtor. Por exemplo, inicie um encadeamento no construtor e o thread conterá referências ao objeto.
Contêiner sincronizado: executa acesso de viagem a todos os estados do contêiner, vetor, hashtable, cllectções.synchronizedmap | List
Recipientes simultâneos: Concurrenthashmap, copywriteArrayList, concurrentlinkedQueue, BlockingQueue
Liste as vantagens do recurso de acesso aleatório.
O bloqueio adiciona operação de definição de bloqueio
Concurrenthashmap: bloqueios separados, trazendo alta taxa de transferência para acesso simultâneo, além de perder quase nenhum desempenho de acesso de um único thread. Retorna um iterador fracamente consistente.
A fraca consistência do iterador detectará alterações no contêiner após a geração do iterador.
O tamanho simultâneo do contêiner (), isEmpty () é enfraquecido e retorna um resultado aproximado.
CopyOnWriteArrayList: Copie sempre que o contêiner é modificado e o requisito iterativo é maior que o requisito de modificação.
Modelo do Produtor-Consumidor, usando filas de bloqueio limitado para desacoplar os produtores e o código dos consumidores.
A estrutura de execução de tarefas do executor implementa o produtor e o modelo de consumidor.
Síncrono: Coloque espera que o consumidor esteja disponível, pegue a espera que o produtor esteja disponível, adequado para cenários em que o consumidor é suficiente.
Uma fila de ponta dupla está associada ao modo de roubo de trabalho. É diferente do fato de que todos os consumidores compartilham uma fila de trabalho no modo Produtor-Consumidor. Cada consumidor no modo de roubo de trabalho tem sua própria fila de ponta dupla. Se um consumidor concluir todo o seu trabalho, ele poderá roubar tarefas no final de outras filas de consumidores.
O modo de roubo de trabalho é adequado para a execução de uma unidade de uma tarefa, mais tarefas podem ser identificadas, como atravessar arquivos.
Quando um método pode lançar uma interrupção, significa que é um método bloqueável. Jogue ou captura interruptedException.
Sincronizador: Sincronizador --- Semáforo, barreira, trava, encapsula o estado, determina o comportamento do encadeamento nesse estado (passe ou blocos), fornece um método para manipular o estado e aguarda com eficiência que o sincronizador entre no estado desejado.
Bloqueio de trava: atrasa o progresso do thread até que o encadeamento atinja um estado final, como um interruptor único. Pode ser usado para garantir que uma atividade específica não ocorra até que outras atividades sejam concluídas.
Por exemplo:
O FutureTask pode ser usado como um cálculo de resultado portátil abstrato e de bloqueio e é implementado por meio de chamadas. O Future.get depende do status de execução da tarefa. Se a tarefa for concluída, o resultado será retornado. Caso contrário, estará esperando.
A estrutura do executor usa o FutureTask para concluir tarefas assíncronas.
Semafer semafer: usado para controlar o número de atividades que podem acessar um recurso específico simultaneamente ou executar uma determinada operação ao mesmo tempo, pool de recursos, limite de contêiner.
Nível de barreira: semelhante ao bloqueio, todos os threads devem atingir o nível ao mesmo tempo antes que possam continuar processando. O travamento espera pelo tempo, e o nível aguarda outros threads e é reutilizado. Através do nível, a Aguard retornará um número de índice de chegada exclusivo para cada thread, que pode ser usado para eleger um líder e realizar algumas tarefas especiais na próxima iteração.
O trocador é uma forma de um nível.
O exposto acima é todo o conteúdo deste artigo. Espero que o conteúdo deste artigo seja de ajuda para estudar ou trabalhar de todos. Eu também espero apoiar mais wulin.com!