Sobes.tech
Middle

Qual é a diferença entre 'concorrência' e 'paralelismo' no contexto de multithreading?

sobes.tech IA

Resposta da IA

A concorrência (concurrency) é a capacidade de um sistema de processar várias tarefas simultaneamente. Essas tarefas podem ser executadas num único núcleo de processador, alternando entre si ao longo do tempo (princípio da partilha de tempo). Não necessariamente significa que as tarefas são executadas num mesmo momento físico.

O paralelismo (parallelism) é a execução real e simultânea de várias tarefas num mesmo momento físico, usando vários núcleos de processador ou múltiplos processadores.

Diferença principal:

  • Concorrência: Gestão de várias tarefas que podem ou não ser executadas simultaneamente. Foco na estruturação do programa para gerir múltiplos threads de execução.
  • Paralelismo: Execução simultânea física de várias tarefas. Foco na utilização dos recursos de hardware disponíveis para acelerar a execução.
// Exemplo de concorrência (sem garantia de execução paralela)
public class ConcurrentExample {
    public static void main(String[] args) {
        Runnable task1 = () -> System.out.println("Tarefa 1 iniciada no thread: " + Thread.currentThread().getName());
        Runnable task2 = () -> System.out.println("Tarefa 2 iniciada no thread: " + Thread.currentThread().getName());

        new Thread(task1).start(); // Podem ser executadas num mesmo núcleo
        new Thread(task2).start(); // Podem ser executadas num mesmo núcleo
    }
}
// Exemplo de paralelismo (requer um processador multinúcleo)
import java.util.List;
import java.util.Arrays;

public class ParallelExample {
    public static void main(String[] args) {
        List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);

        numbers.parallelStream() // Usa ForkJoinPool para execução paralela
               .forEach(number -> System.out.println("Processando " + number + " no thread: " + Thread.currentThread().getName()));
    }
}
Aspecto Concorrência Paralelismo
Objetivo Gestão de várias tarefas Aceleração da execução
Requisitos Várias tarefas/threads Processador multinúcleo/múltiplos processadores
Execução Alternância na execução Execução simultânea
Frequência Pode ser alcançada num único núcleo Requer múltiplos núcleos/processadores
Exemplo Multitarefa num sistema de núcleo único Processamento paralelo de grandes conjuntos de dados