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 |