Metodologia e Linguagem de Programação - 2015.1 - Aula 14

284 visualizações

Publicada em

Metodologia e Linguagem de Programação - 2015.1 - Aula 14

Publicada em: Educação
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
284
No SlideShare
0
A partir de incorporações
0
Número de incorporações
3
Ações
Compartilhamentos
0
Downloads
7
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Metodologia e Linguagem de Programação - 2015.1 - Aula 14

  1. 1. Metodologia e Linguagem de Programação Prof.º Thyago Maia 2015.1
  2. 2. Objetivos Aula 14 • Apresentar o conceito de programação concorrente e o uso da classe Thread; • Fazer com que o aluno crie suas primeiras Threads; 2
  3. 3. Threads
  4. 4. Threads  Tal classe Java permite que métodos sejam executados em paralelo;  Programação concorrente;  Threads estão presentes em boa parte dos processamentos realizados pelo computador;  Executar uma varredura por vírus enquanto executa um editor de texto;  Exibir uma barra de progresso enquanto carrega um arquivo;  Entre outros; 4
  5. 5. Exemplo de Uso
  6. 6. Threads  Vamos supor que desejamos criar duas classes, Positivo e Negativo;  Positivo exibirá, a partir do método mostrar, os números entre 0 e 100;  Negativo exibirá, a partir do método mostrar, os números entre -100 e 0;  Os métodos mostrar de cada classe deverão ser executados ao mesmo tempo (em paralelo); 6
  7. 7. Threads  Vamos supor que desejamos criar duas classes, Positivo e Negativo; 7
  8. 8. Threads  Como fazer com que os métodos mostrar possam ser executados em paralelo?  Classes com métodos concorrentes deverão “assinar um contrato” com a interface Runnable (implementar uma interface);  Tal “contrato” exige a implementação do método run (o método que será executado em paralelo pela classe que assinou o contrato); 8
  9. 9. Threads 9
  10. 10. Threads  Como executar paralelamente os métodos run das classes Positivo e Negativo?  Para os testes, vamos criar a classe Principal do projeto;  Nela, instanciaremos as classes Positivo e Negativo;  Precisaremos criar objetos da classe Thread. Em cada instância, referenciamos o objeto que encapsula os métodos concorrentes;  A partir do objeto da classe Thread, executamos o método start(); 10
  11. 11. Threads 11
  12. 12. O método sleep()
  13. 13. O método sleep()  A classe Thread possui a implementação do método estático sleep(), que faz com que uma thread “durma” (fique inativa) por alguns milissegundos;  É preciso tratar exceções da classe InterruptedException para utilizar o referido método; 13
  14. 14. O método sleep()  Ex.: Fazer com que o método run da classe Positivo “durma” por 3 segundos a cada impressão de um número; 14
  15. 15. O método sleep() 15
  16. 16. Escalonador e Troca de Contexto
  17. 17. Escalonador e Troca de Contexto  Ainda analisando o exemplo anterior, qual método run será executado primeiro?  Não podemos garantir qual será executado primeiro!  Não é uma execução sequencial, é paralela;  Para que o paralelismo ocorra, um pouco de cada thread é executado em cada instante de tempo;  A troca é tão rápida que a sensação é que os dois métodos foram executados ao mesmo tempo; 17
  18. 18. Escalonador e Troca de Contexto  O escalonador de threads (scheduler) é responsável por...  Escolher qual a próxima thread a ser executada;  Fazer a troca de contexto (contexto switch);  O programador não pode controlar tais ações (apesar de existir formas de “influenciar” o escalonador); 18
  19. 19. Explore o assunto!
  20. 20. Explore o assunto! • Referências – CAELUM. Java e Orientação a Objetos. [Internet]. [citado em 2015 Mar 18]. Disponível em: https://www.caelum.com.br/apostila-java- orientacao-objetos/. 20

×