domingo, 23 de outubro de 2011

Tudo sobre Threads

Olá galera boa noite! Hoje vou falar um pouquinho sobre threads de computadores o que são, o que fazem como funcionam.
É possível encontrar uma thread em todos os sistemas operacionais atuais. Thread é um artifício que permite a realização de varias atividades dentro de um único processo. O suporte a thread é oferecido pelos sistemas operacionais no caso da linha de execução ao nível do kernel, ou implementada, através de uma biblioteca de uma determinada linguagem.
           Na utilização de thread em Java, que é a primeira linguagem de programação a incluir explicitamente o conceito de Threads na própria linguagem, através dela é possível definir diferentes seqüências de execução independentemente, uma thread é similar a um processo no sentido em que corresponde a um conjunto de instruções que pode ser escalonado para execução em um dado processador, partilhando o mesmo espaço de endereçamento descritores de arquivos e outros atributos que são específicos daquele processo principal lhes deu origem, esta divisão torna possível que as threads compartilhem informações entre si, mais é necessário que o desenvolvedor se assegure que uma thread não atrapalhe a execução de outra.  Uma curiosidade todo o programa em Java possui pelo menos uma thread: a thread main. Além desta maquina virtual há algumas outras que realizam tarefas como coleta de lixo e finalização de objetos. E em algumas classes da API disponíveis em Java utilizam thread em suas implementações, como a classe Swing ou a classe de implementação de RMI.
Threads são também chamados de processos leves, independentes possuem sua própria pilha de execução, e suas próprias variáveis locais. Um processo pode contem múltiplas threads que parecem executar ao mesmo tempo e de forma assíncrona em relação as outras threads.
A API de threads em Java é muito simples. Mas escrever um programa complexo que as use de maneira eficiente e correta não é tão simples assim. É função do programador, impedir que uma thread interfira de forma indesejável no funcionamento das outras threads do mesmo processo.
A utilização da thread trás vários benefícios ao programa: maior desempenho em ambientes de muitos processos, simplifica a modelagem de algumas aplicações. Para criar uma thread é necessário a utilização de herança ou implementando uma interface chamada Runnable. Dentro de java.lang existe uma classe thread e nesta classe é possível implementar alguns métodos que já são próprios desta, Run que é o método que executa as atividades da thread, quando este método finaliza a thread também acaba. O método Start que dispara a execução da thread antes que ele acabe ele faz uma chamada ao método Run. O método Sleep, ele coloca a thread para dormir por milissegundos. O método Join que espera o termino da thread para qual foi enviada a mensagem para ser liberada. O método Interrupt que interrompe a execução da thread. E o método Interrupted que testa se a thread foi ou não interrompida.
Dentro da classe Object ainda existe os seguintes métodos Wait, Notify e NotifyAll. Com esses métodos Java fornece uma implementação que não utiliza espera ativa. Ao invés disso, esses métodos enviam eventos para as threads indicando se elas devem ser suspensas ou se devem voltar ao estado em execução. O método Wait faz a thread que chamou o método dormir até que ela seja interrompida pelo método Thread Interrupt, até que seu tempo especificado no argumento de Wait tenha passado ou então até que outra thread a notifique usando o método Notify ou NotifyAll . Antes de ser suspensa a thread libera o lock do objeto, que continuará mantendo todos os outros locks que ela possuir enquanto estiver suspensa. O método Notify acorda se existir, alguma thread que esteja esperando um evento deste objeto. E o comando NotifyAll acorda todas as threads que estejam esperando neste objeto. Antes que a thread acordada possa prosseguir, ela deve esperar a thread que a acordou liberar o lock e obter novamente.

Estados possíveis de uma Thread:


Bom galera basicamente é isso, espero que tenham entendido!

Postado por: Giselle Fonseca

Nenhum comentário:

Postar um comentário