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