Buscar

Programação em Paralelo com Threads em Java

Prévia do material em texto

*
*
*
Thread
O mundo real é concorrente e dinâmico, e apresenta problemas computacionais que precisam ser resolvidos
Necessário simular o mundo real !!
Para simular esses sistemas de forma precisa, softwares que possam lidar com a concorrência são necessários
Java possui caracterísitcas que lhe dá o suporte a programação em paralelo
*
*
*
Multitarefa
Capacidade de ter mais de um programa funcionando no que parece ser simultâneo
S.O. está repartindo recursos para cada programa, dando a impressão de atividade paralela
Na maior parte do tempo, a CPU fica ociosa
*
*
*
PROCESSOS
O conceito de thread está intimamente ligado ao conceito de processo 
Um processo é basicamente um programa em execução 
constituído do código executável, dos dados referentes ao código, da pilha de execução, do valor do contador de programa (registrador PC), do valor do apontador do apontador de pilha (registrador SP), dos valores dos demais registradores do hardware, 
*
*
*
PROCESSOS
Vários processos podem compartilhar o mesmo processador
os processos se revezam (o sistema operacional é responsável por esse revezamento) no uso do processador 
para permitir esse revezamento será necessário salvar o contexto do processo que vai ser retirado do processador para que futuramente o mesmo possa continuar sua execução.
*
*
*
Thread
Thread, ou processo leve, é a unidade básica de utilização da CPU
 Thread são estruturas de execução pertencentes a um processo;
*
*
*
*
*
*
Várias threads em várias CPUs
Várias threads compartilhando uma única CPU
*
*
*
Multithread
Cada tarefa é chamada de linha de execução (thread)
Programas de múltiplas linhas de execução ampliam a idéia de multitarefa levando-a a um nível mais baixo
Programas individuais parecerão realizar várias tarefas ao mesmo tempo
*
*
*
Multitarefa e Multithread
Qual a diferença entre múltiplas tarefas (processos) e múltiplas linhas de execução (threads)?
Cada processo possui seu próprio conjunto completo de variáveis
Os threads compartilham os mesmos dados
*
*
*
Multitarefa e Multithread
Vantagens & Problemas
A sobrecarga no S.O. para criar e destruir threads é menor do que para ativar novos processos;
A comunicação entre processos é muito mais lenta e restritiva;
Threads são mais arriscados devido ao compartilhamento de dados.
*
*
*
EXEMPLOS
Um navegador deve tratar com vários hosts;
Abrir uma janela de correio eletrônico ou ver outra página enquanto faz downloads
Editor de Texto: Enquanto se envia para a impressora um texto pode-se continuar digitando o texto
UM servidor de bate papo (chat) que aceita vários clientes
*
*
*
Classe Thread
Serve para construir um novo thread a qualquer momento
Objetos desta classe, ou de seus descendentes, poderão ter seus códigos processados em paralelo
Métodos principais:
void run() – método que deve ser sobrecarregado para incluir o código a ser processado em paralelo;
void start() – inicia esta linha de execução, fazendo o método run() ser chamado. Este método retornará imediatamente;
*
*
*
Código fonte
*
*
*
Prática
Faça um programa que implemente 5 threads cada uma simulando uma ação de um programa;
Separe o programa CountThread em duas classes;
Faça uma thread que efetue uma soma de dois inteiros e exiba o resultado na tela; Instancie três threads com somas distintas e veja o resultado

Continue navegando