Pular para conteúdo

Concorrência e Paralelismo

Concorrência é a composição de tarefas que progridem independentemente. Paralelismo é a execução simultânea de computações. Um projeto concorrente pode ser executado em um núcleo por intercalação; uma execução paralela precisa de múltiplos recursos de processamento.

gantt
    title Concurrent interleaving on one worker
    dateFormat X
    axisFormat %L
    section Worker
    Task A :a1, 0, 3
    Task B :b1, 3, 2
    Task A :a2, 5, 2
    Task B :b2, 7, 3

Concorrência costuma tratar da capacidade de resposta e do gerenciamento de espera. Paralelismo costuma tratar da redução do tempo decorrido de computação ou do aumento de throughput. Eles se sobrepõem quando tarefas concorrentes executam simultaneamente.

Sequência de aprendizado

  1. Threads e tarefas
  2. Segurança e progresso
  3. Java Memory Model
  4. Executors e futures
  5. Computação paralela

Preocupações compartilhadas

Condições de corrida, falhas de visibilidade, deadlock, starvation, desequilíbrio de carga e excesso de subscrição não pertencem exclusivamente à concorrência ou ao paralelismo. Surgem da coordenação, da memória, do escalonamento e da estrutura da carga.

Aplique as consequências operacionais por meio de pools e recursos limitados, controles de resiliência e o fluxo de depuração e análise de desempenho.