Sistemas OperacionaisImplementando Thread em Java
O problema• Teoricamente existe uma grande proteção para  que um processo não afete a execução de  outro, modificando, a m...
O problema• Este alto grau de isolamento reduz os desagradáveis  de proteção, pois o sistema se torna mais robusto.• Em co...
Solução• Implementação de multiprogramação dentro do  processo com o uso de Thread.
O que é uma Thread• Thread é uma linha de execução dentro do  processo;• Um processo pode ter no mínimo 1 linha de  execuç...
Inicia Execução• A Thread inicia a execução com a chamada do  método start().
Bloqueado• A thread está no estado de bloqueado, quando  for desativada. Para desativar uma thread é  necessário que ocorr...
Retorno a Execução• Para a thread sair do estado de bloqueado e voltar  para o estado de executável, uma das seguintes  op...
Encerrando• A thread está no estado de encerrado, quando  encerrar a sua execução.• Isto pode acorrer pelo término do méto...
Criando uma Threadclass Escrita extends Thread {    private int i;    public void run() {         while(true)             ...
Criando uma Threadpublic class SimplesThread1 {    public static void main(String[] args) {         Escrita e = new Escrit...
interface Runnable• A interface pública Runnable deve ser  implementada em nossas classes quando  queremos que instâncias ...
Implementando exemplo              Runnableclass Escrita implements Runnable {    private int i;    public void run() {   ...
Implementando exemplo              Runnablepublic class SimplesThread2 {    public static void main(String[] args) {      ...
Métodos para trabalhar com               Threads• void run() – Deve conter o código que se deseja executar,  quando a thre...
Métodos para trabalhar com               Threads• void suspend() – Coloca a thread no final da fila de sua  prioridade e a...
Métodos para trabalhar com               Threads• boolean isAlive() – retorna true caso uma thread estiver no  estado exec...
Métodos para trabalhar com               Threads• void wait() – Interrompe a thread corrente e coloca a mesma na  fila de ...
Exercício• Exercício: Criar um projeto com 50 Threads  independentes escrevendo no Output.Acompanhe o uso do processamento.
Referência• http://www.devmedia.com.br/utilizando-  threads-parte-1/4459
Thread Java
Upcoming SlideShare
Loading in …5
×

Thread Java

2,009 views

Published on

Apresentação sobre Threads com Java.

Published in: Education
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,009
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
70
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Thread Java

  1. 1. Sistemas OperacionaisImplementando Thread em Java
  2. 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. 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. 4. Solução• Implementação de multiprogramação dentro do processo com o uso de Thread.
  5. 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. 6. Inicia Execução• A Thread inicia a execução com a chamada do método start().
  7. 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. 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. 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. 10. Criando uma Threadclass Escrita extends Thread { private int i; public void run() { while(true) System.out.println(“Número :”+ i++); }}
  11. 11. Criando uma Threadpublic class SimplesThread1 { public static void main(String[] args) { Escrita e = new Escrita(); e.start(); //Ativa a thread }}
  12. 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. 13. Implementando exemplo Runnableclass Escrita implements Runnable { private int i; public void run() { while(true) System.out.println(“Número: ”+ i++); }}
  14. 14. Implementando exemplo Runnablepublic class SimplesThread2 { public static void main(String[] args) { Escrita e = new Escrita(); Thread t = new Thread(e); t.start(); }}
  15. 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. 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. 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. 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. 19. Exercício• Exercício: Criar um projeto com 50 Threads independentes escrevendo no Output.Acompanhe o uso do processamento.
  20. 20. Referência• http://www.devmedia.com.br/utilizando- threads-parte-1/4459

×