Threads
O que é uma thread?
• Para programas "normais" (single thread), tem um único ponto de execução dentro do programa num momento particular;
• Um thread é semelhante: tem um início, uma sequência e um fim, como um programa "normal
“;
• Tem um único ponto de execução no certo momento dentro de um thread;
• Um thread não é um programa, mas executa dentro de um programa (ver figura)
• Definição: um thread é um fluxo único de controle sequencial dentro de um programa;
• A coisa fica mais interessante quando temos mais de um thread no mesmo programa (ver figura); • Um browser é um exemplo de uma aplicação multithreaded • Várias coisas podem ocorrer ao mesmo tempo: • scroll
• download de um applet
• download de uma imagem
• tocar uma animação
• tocar um som
• imprimir uma página em background
• download de uma nova página
• olhar 3 applets de ordenação trabalhando
• Um thread parece ser um processo mas
• Compartilha o mesmo "espaço de endereçamento" • É muito rápido chavear a execução entre threads mas não entre processos
• Um thread recebe alguns recursos próprios durante a execução
• Uma pilha de execução para poder chamar métodos, passar parâmetros, alocar variáveis locais • Um "Program Counter"
• Chamamos isso o "contexto de execução do thread"
• Alguns autores chamam thread de "contexto de execução“ Características
• Variáveis locais da thread são alocadas em memória estática própria;
• Todas as threads de um processo compartilham a memória e os recursos desse processo.
Benefícios
• Criar/terminar uma thread é mais rápido que criar/terminar um processo;
• O chaveamento de duas threads (do mesmo processo) gasta menos tempo que o chaveamento entre dois processos diferentes;
• As threads de um processo compartilham memória e arquivos e podem se comunicar sem a intermediação (invocação) do núcleo;
• Aplicações que requerem o compartilhamento de buffers (por exemplo, produtores e