Sobes.tech
Junior

O que é um processo e um thread? Quais são as diferenças entre eles?

sobes.tech IA

Resposta da IA

O processo é um programa em execução que possui o seu próprio espaço de endereçamento, recursos (descritores de ficheiros, ligações de rede) e contexto de execução.

O thread (linha de execução, thread) é a menor unidade de execução dentro de um processo. Um processo pode conter um ou vários threads, que partilham os seus recursos, mas têm a sua própria pilha de chamadas, contexto de execução e contador de instruções.

Principais diferenças:

Característica Processo Thread
Isolamento Completo. Um processo não afeta outro. Parcial. Os threads partilham recursos do processo.
Troca de dados Através de IPC (comunicação entre processos). Leve. Através de variáveis comuns no processo.
Troca de contexto Caro. Requer guardar e restaurar todo o estado do processo. Mais barato. Requer guardar e restaurar o estado do thread.
Criação Caro. Requer alocação de recursos. Mais barato. Requer alocação de uma pilha.
Finalização A finalização do processo termina todos os seus threads. A finalização de um thread não afeta outros threads ou o processo.

Exemplo de criação de processo (comando externo) em Java:

// Java
Process process = Runtime.getRuntime().exec("ls -l");
// Trabalhar com o processo: obter entrada/saída, etc.

Exemplo de criação de thread em Java:

// Java
Runnable task = () -> {
    System.out.println("Olá do thread: " + Thread.currentThread().getName());
};

Thread thread = new Thread(task);
thread.start(); // Iniciar o thread