Please enable JavaScript.
Coggle requires JavaScript to display documents.
13 - CONCORRÊNCIA (TESTES (EXPONHA OS PROBLEMAS (Configurações de…
13 - CONCORRÊNCIA
TESTES
EXPONHA OS PROBLEMAS
Configurações de procedimentos
Configurações de Carregamento
Realize testes com frequência
Código sem trhead deve funcionar primeiro
Código com threads protável
Rode com mais threads que processadores
Teste em diferentes plataformas
ADAPTAR PARA FORÇAR FALHAS
Object.sleep()
Object.yield()
Object.priority()
Não ignore casos isolados
FERRAMENTAS
ConTest
CGLIB
ASM
RECOMENDAÇÕES
DESACOPLAMENTO
Código concorrente é complexo
Separe concorrência de regras de negócio (aplicação)
Concorrência possui seu próprio ciclo de vida
Testes independentes da aplicação
ESCOPO DE DADOS LIMITADO
Encapsulamento é a regra
Proteja dados compartilhados
Evite repetição de código
Evite muitos pontos compartilhados
USE CÓPIAS DE DADOS
Evite acesso sincronizado
Cópia de dados para compartilhamento
Custo de memória menor que velocidade
CONHEÇA FERRAMENTAS
java.util.concurrent
java.util.concurrent.atomic
java.util.concurrent.locks
CONHEÇA PROBLEMAS COMUNS
recursos limitados (bound resources)
Esxlusão Mútua (Mutual Exclusion)
Espera infinita (Starvation)
Bloqueio infinito (deadlock)
Livelock (bloqueado por outras concorrencias)
CONHEÇA OS ALGORITMOS
producer-consumer
leitores e escritores
problema dos filósofos
CUIDADO COM DESLIGAMENTO
Não desliga por não finalizar processo
Bloqueio de processo por consumo ou produção
Atenção redobrada aqui
TIPOS DE SINCRONIA
Bloqueio no cliente
Bloqueio no servidor
Servidor extra
Menor sessão sincronizada possível
OBJETIVOS
levesa
tempo de resposta
desacoplar tempo de execução
MITOS
MELHOR DESEMPENHO
Muito tempo de espera
processamento complexo dividido
Bugs nem sempre se repetem
NÃO MUDA O PROJETO ATUAL
Algoritmo concorrente <> do tradicional
Desacoplar processos muda estrutura do sistema
Mais concorrência, mais código
Mais complexidade para coisas simples
MELHORA SISTEMAS WEB
Web é assíncrona
Melhor entender seu container web
Investir em proteção contra
deadlock