Thread Java
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Thread Java

on

  • 2,106 views

Apresentação sobre Threads com Java.

Apresentação sobre Threads com Java.

Statistics

Views

Total Views
2,106
Views on SlideShare
2,106
Embed Views
0

Actions

Likes
1
Downloads
51
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Thread Java Presentation Transcript

  • 1. Sistemas OperacionaisImplementando Thread em Java
  • 2. O problema• Teoricamente existe uma grande proteção para que um processo não afete a execução de outro, modificando, a menos que haja um mecanismo de comunicação entre os processos (IPC – Inter Process Communication).
  • 3. O problema• Este alto grau de isolamento reduz os desagradáveis de proteção, pois o sistema se torna mais robusto.• Em contrapartida, o início de cada processo é bastante custoso, em termos de uso de memória e desempenho, e o mecanismo de troca de mensagens entre os processos é mais complexo e mais lento, se comparado a um único programa acessando a própria base de dados.
  • 4. Solução• Implementação de multiprogramação dentro do processo com o uso de Thread.
  • 5. O que é uma Thread• Thread é uma linha de execução dentro do processo;• Um processo pode ter no mínimo 1 linha de execução.
  • 6. Inicia Execução• A Thread inicia a execução com a chamada do método start().
  • 7. Bloqueado• A thread está no estado de bloqueado, quando for desativada. Para desativar uma thread é necessário que ocorra uma das quatro operações a seguir:• 1. Foi chamado o método sleep(long tempo) da thread;• 2. Foi chamado o método suspend();• 3. A trhead chamou o método wait();• 4. A thread chamou uma operação de I/O que bloqueia a CPU;
  • 8. Retorno a Execução• Para a thread sair do estado de bloqueado e voltar para o estado de executável, uma das seguintes operações deve ocorrer, em oposição as ações acima:• Retornar após o tempo especificado, caso a thread estiver adormecida;• Retornar através do método resume(), caso a thread tiver sido suspensa (método deprecado);• Retornar com o método notify() (ou notifyAll()), caso a thread estiver em espera;• Retornar após a conclusão da operação de I/O.
  • 9. Encerrando• A thread está no estado de encerrado, quando encerrar a sua execução.• Isto pode acorrer pelo término do método run(), ou pela chamada explícita do método stop().
  • 10. Criando uma Threadclass Escrita extends Thread { private int i; public void run() { while(true) System.out.println(“Número :”+ i++); }}
  • 11. Criando uma Threadpublic class SimplesThread1 { public static void main(String[] args) { Escrita e = new Escrita(); e.start(); //Ativa a thread }}
  • 12. interface Runnable• A interface pública Runnable deve ser implementada em nossas classes quando queremos que instâncias destas possam ser executadas por uma thread.
  • 13. Implementando exemplo Runnableclass Escrita implements Runnable { private int i; public void run() { while(true) System.out.println(“Número: ”+ i++); }}
  • 14. Implementando exemplo Runnablepublic class SimplesThread2 { public static void main(String[] args) { Escrita e = new Escrita(); Thread t = new Thread(e); t.start(); }}
  • 15. Métodos para trabalhar com Threads• void run() – Deve conter o código que se deseja executar, quando a thread estiver ativa;• void start() – Inicia a thread. Ou seja, efetiva a chamada do método run();• void stop() – encerra a thread;• static void sleep(long tempo) – deixa thread corrente inativa por no mínimo tempo milisegundos e promove outra thread. Note que este método é de classe e, conseqüentemente, uma thread não pode fazer outra thread dormir por um tempo;• static void yield() – Deixa a thread em execução temporariamente inativa e, quando possível, promove outra thread de mesma prioridade ou maior;
  • 16. Métodos para trabalhar com Threads• void suspend() – Coloca a thread no final da fila de sua prioridade e a deixa inativa (método deprecado);• void resume() – Habilita novamente a execução da thread. Este método deve ser executado por outra thread, já que a thread suspensa não está sendo executada (método deprecado);• void interrupt() – envia o pedido de interrupção de execução de uma thread;• static boolena interrupted() – Verifica se a thread atual está interrompida;• void join() – Aguarda outra thread para encerrar;
  • 17. Métodos para trabalhar com Threads• boolean isAlive() – retorna true caso uma thread estiver no estado executável ou bloqueado. Nos demais retorna false;• void setPriority(int prioridade) – Define a prioridade de execução de uma thread. Os valores de prioridade estão entre 1 e 10;• int getPriority() – verifica a prioridade de execução de uma thread;• synchronized – mecanismo que permite ao programador controlar threads, para que as mesmas possam compartilhar a mesma base de dados sem causar conflitos;
  • 18. Métodos para trabalhar com Threads• void wait() – Interrompe a thread corrente e coloca a mesma na fila de espera (do objeto compartilhado) e aguarda que a mesma seja notificada. Este método somente pode ser chamado dentro de um método de sincronizado;• void notify() – Notifica a próxima thread, aguardando na fila;• void notifyAll() – Notifica todas as threads.
  • 19. Exercício• Exercício: Criar um projeto com 50 Threads independentes escrevendo no Output.Acompanhe o uso do processamento.
  • 20. Referência• http://www.devmedia.com.br/utilizando- threads-parte-1/4459