Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
Introdução ao     uso de Threads          em      Java      Daniel de Angelis Cordeiro        Aula para a disciplina MAC 0...
Introdução●    Threads, também chamados de processos    leves, permitem múltiplas atividades dentro    de um único process...
Por que utilizar Threads?Há várias razões para utilizarmos threads.Entre elas:●    Maior desempenho em ambientes    multip...
Criando ThreadsHá duas formas de criarmos uma thread em Java:●    Ou usamos herança e criamos uma classe    que estende a ...
Usando HerançaUsando herança, nossa classe deve sobrescrever o método public void run():class Tarefa1 extends Thread {    ...
Usando a Interface RunnableA interface Runnable nos obriga a  implementar o método public void run():class Tarefa2 impleme...
Exemplo de UsoPara usar as classes Tarefa1 e Tarefa2  devemos fazer:Thread threadComHeranca = new Tarefa1();Thread threadC...
Saída do ExemploA saída de nosso exemplo é mais ou menos  essa:              Usando Runnable              Usando Herança  ...
Estados de uma ThreadUma thread pode estar em um dos seguintes estados:●    criada;●    em execução;●    suspensa ou●    m...
Sincronismo entre Threads●    O uso de memória compartilhada entre as    threads obriga o programador a sincronizar    as ...
O comando synchronized    Os seguintes usos do comando synchronized são    equivalentes:synchronized public void teste() p...
Variáveis VoláteisVariáveis voláteis        Exemplo de código: possuem as seguintes                class VolatileTeste { c...
wait(), notify() e notifyAll()Estes métodos da classe Object implementam  o conceito de monitores sem utilizar espera  ati...
wait(), notify() e notifyAll()●    wait() - suspende a thread que chamou o    método até que outra thread a acorde ou até ...
Mais InformaçõesSe mesmo depois desta maravilhosa aula você ainda tiver alguma dúvida, recomendo a leitura do texto que pr...
Nächste SlideShare
Wird geladen in …5
×

Aula java[1]

836 Aufrufe

Veröffentlicht am

Java

Veröffentlicht in: Business
  • Als Erste(r) kommentieren

Aula java[1]

  1. 1. Introdução ao uso de Threads em Java Daniel de Angelis Cordeiro Aula para a disciplina MAC 0438 – Programação Concorrente
  2. 2. Introdução● Threads, também chamados de processos leves, permitem múltiplas atividades dentro de um único processo;● Um mesmo processo pode conter múltiplas threads que parecem executar ao mesmo tempo;● Java é a primeira linguagem de programação a incluir o conceito de threads na própria linguagem.
  3. 3. Por que utilizar Threads?Há várias razões para utilizarmos threads.Entre elas:● Maior desempenho em ambientes multiprocessados;● Responsividade em interfaces gráficas;● Simplificação na modelagem de algumas aplicações.
  4. 4. Criando ThreadsHá duas formas de criarmos uma thread em Java:● Ou usamos herança e criamos uma classe que estende a classe Thread;● Ou criamos uma classe que implementa a interface Runnable.
  5. 5. Usando HerançaUsando herança, nossa classe deve sobrescrever o método public void run():class Tarefa1 extends Thread { public void run() { for(int i=0; i<1000; i++) System.out.println(“Usando herança”); }}
  6. 6. Usando a Interface RunnableA interface Runnable nos obriga a implementar o método public void run():class Tarefa2 implements Runnable { public void run() { for(int i=0; i<1000; i++) System.out.println(“Usando Runnable”); }}
  7. 7. Exemplo de UsoPara usar as classes Tarefa1 e Tarefa2 devemos fazer:Thread threadComHeranca = new Tarefa1();Thread threadComRunnable = new Thread(new Tarefa2());threadComHeranca.start();threadComRunnable.start();
  8. 8. Saída do ExemploA saída de nosso exemplo é mais ou menos essa: Usando Runnable Usando Herança Usando Herança Usando Runnable Usando Herança Usando Runnable (...)
  9. 9. Estados de uma ThreadUma thread pode estar em um dos seguintes estados:● criada;● em execução;● suspensa ou● morta.
  10. 10. Sincronismo entre Threads● O uso de memória compartilhada entre as threads obriga o programador a sincronizar as ações de suas threads.● Para isso, Java provê monitores ou locks. Imagine um lock como uma permissão para que apenas uma thread possa utilizar um recurso por vez.● Cada objeto em Java possui um lock e ele deve ser obtido através do comando synchronized.
  11. 11. O comando synchronized Os seguintes usos do comando synchronized são equivalentes:synchronized public void teste() public void teste() {{ synchronized(this) { façaAlgo(); façaAlgo();} } }
  12. 12. Variáveis VoláteisVariáveis voláteis Exemplo de código: possuem as seguintes class VolatileTeste { características: boolean flag; public void foo() {● operações atômicas; flag = false;● mudanças visíveis if(flag) { (...) } globalmente; }● são instáveis. }
  13. 13. wait(), notify() e notifyAll()Estes métodos da classe Object implementam o conceito de monitores sem utilizar espera ativa. Ao invés disso, notificam as threads indicando se estas devem ser suspensas ou se devem voltar a ficar em execução.O lock do objeto chamado pela thread para realizar as notificações será utilizado. Por isso, antes de chamar um dos três métodos, o lock deve ser obtido utilizando-se o comando synchronized.
  14. 14. wait(), notify() e notifyAll()● wait() - suspende a thread que chamou o método até que outra thread a acorde ou até que o tempo especificado como argumento tenha passado;● notify() - acorda, se existir, alguma thread que esteja esperando um evento neste objeto;● notifyAll() - acorda todas as threads que estejam esperando neste objeto.
  15. 15. Mais InformaçõesSe mesmo depois desta maravilhosa aula você ainda tiver alguma dúvida, recomendo a leitura do texto que preparei sobre threads em Java (que está muito mais completo).Para cada referência do texto coloquei um apontador para a página onde ela se encontra na internet. Assim você nem precisa procurar o livro na biblioteca para consultar. :-)

×