Baixe o app para aproveitar ainda mais
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
Compartilhar