SlideShare uma empresa Scribd logo
1 de 15
Baixar para ler offline
Introdução ao     uso de Threads
          em      Java


      Daniel de Angelis Cordeiro

        Aula para a disciplina
 MAC 0438 – Programação Concorrente
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.
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.
Criando Threads
Há 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.
Usando Herança
Usando 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”);
    }
}
Usando a Interface Runnable
A 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”);
    }
}
Exemplo de Uso
Para usar as classes Tarefa1 e Tarefa2
  devemos fazer:

Thread threadComHeranca = new Tarefa1();
Thread threadComRunnable =
  new Thread(new Tarefa2());

threadComHeranca.start();
threadComRunnable.start();
Saída do Exemplo
A saída de nosso exemplo é mais ou menos
  essa:
              Usando Runnable
              Usando Herança
              Usando Herança
              Usando Runnable
              Usando Herança
              Usando Runnable
                    (...)
Estados de uma Thread
Uma thread pode estar em um dos seguintes
 estados:


●
    criada;
●
    em execução;
●
    suspensa ou
●
    morta.
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.
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();
}                                    }
                                 }
Variáveis Voláteis
Variá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.
                          }
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.
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.
Mais Informações
Se 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.
                       :-)

Mais conteúdo relacionado

Mais procurados

Trabalhando com eventos e serviços no Zend Framework 2
Trabalhando com eventos e serviços no Zend Framework 2Trabalhando com eventos e serviços no Zend Framework 2
Trabalhando com eventos e serviços no Zend Framework 2William Felipe
 
Java introdução ao java
Java   introdução ao javaJava   introdução ao java
Java introdução ao javaArmando Daniel
 
Curso de OO com C# - Parte 01 - Orientação a objetos
Curso de OO com C# - Parte 01 - Orientação a objetosCurso de OO com C# - Parte 01 - Orientação a objetos
Curso de OO com C# - Parte 01 - Orientação a objetosLeonardo Melo Santos
 
Java 10 Classes Abstratas Interfaces
Java 10 Classes Abstratas InterfacesJava 10 Classes Abstratas Interfaces
Java 10 Classes Abstratas InterfacesRegis Magalhães
 
Workshop sobre programação em C usando a API Berkeley Sockets - Carlos A. M. ...
Workshop sobre programação em C usando a API Berkeley Sockets - Carlos A. M. ...Workshop sobre programação em C usando a API Berkeley Sockets - Carlos A. M. ...
Workshop sobre programação em C usando a API Berkeley Sockets - Carlos A. M. ...Tchelinux
 

Mais procurados (20)

Listas (parte 2 de 3)
Listas (parte 2 de 3)Listas (parte 2 de 3)
Listas (parte 2 de 3)
 
Trabalhando com eventos e serviços no Zend Framework 2
Trabalhando com eventos e serviços no Zend Framework 2Trabalhando com eventos e serviços no Zend Framework 2
Trabalhando com eventos e serviços no Zend Framework 2
 
Tratamento de exceções em Java
Tratamento de exceções em JavaTratamento de exceções em Java
Tratamento de exceções em Java
 
Java introdução ao java
Java   introdução ao javaJava   introdução ao java
Java introdução ao java
 
OpenMP Day 3
OpenMP Day 3OpenMP Day 3
OpenMP Day 3
 
Classes abstratas e interfaces
Classes abstratas e interfacesClasses abstratas e interfaces
Classes abstratas e interfaces
 
Sistemas Distribuídos - Multithreading
Sistemas Distribuídos - MultithreadingSistemas Distribuídos - Multithreading
Sistemas Distribuídos - Multithreading
 
POO - 22 - Tratamento de Exceções em Java
POO - 22 - Tratamento de Exceções em JavaPOO - 22 - Tratamento de Exceções em Java
POO - 22 - Tratamento de Exceções em Java
 
Excepções JAVA
Excepções JAVAExcepções JAVA
Excepções JAVA
 
Estrutura de repetição
Estrutura de repetiçãoEstrutura de repetição
Estrutura de repetição
 
02 controle de fluxo
02   controle de fluxo02   controle de fluxo
02 controle de fluxo
 
Curso de OO com C# - Parte 01 - Orientação a objetos
Curso de OO com C# - Parte 01 - Orientação a objetosCurso de OO com C# - Parte 01 - Orientação a objetos
Curso de OO com C# - Parte 01 - Orientação a objetos
 
Java 10 Classes Abstratas Interfaces
Java 10 Classes Abstratas InterfacesJava 10 Classes Abstratas Interfaces
Java 10 Classes Abstratas Interfaces
 
Interface
InterfaceInterface
Interface
 
Workshop sobre programação em C usando a API Berkeley Sockets - Carlos A. M. ...
Workshop sobre programação em C usando a API Berkeley Sockets - Carlos A. M. ...Workshop sobre programação em C usando a API Berkeley Sockets - Carlos A. M. ...
Workshop sobre programação em C usando a API Berkeley Sockets - Carlos A. M. ...
 
Net - Threads
Net - ThreadsNet - Threads
Net - Threads
 
Java 13 Excecoes
Java 13 ExcecoesJava 13 Excecoes
Java 13 Excecoes
 
SCJP
SCJPSCJP
SCJP
 
Mutex and monitores
Mutex and monitoresMutex and monitores
Mutex and monitores
 
Metasploit Framework: Software Livre para PoC de Vulnerabilidades
Metasploit Framework: Software Livre para PoC de VulnerabilidadesMetasploit Framework: Software Livre para PoC de Vulnerabilidades
Metasploit Framework: Software Livre para PoC de Vulnerabilidades
 

Semelhante a Introdução Threads Java

Trabalhando com Threads em JAVA
Trabalhando com Threads em JAVATrabalhando com Threads em JAVA
Trabalhando com Threads em JAVAMarcio Palheta
 
Funcamentos de Programação Concorrente
Funcamentos de Programação ConcorrenteFuncamentos de Programação Concorrente
Funcamentos de Programação ConcorrenteDenis L Presciliano
 
Aula sobre multithreading
Aula sobre multithreadingAula sobre multithreading
Aula sobre multithreadingBianca Dantas
 
Delphi Conference 2012 - Controlando a Concorrência em Aplicações Multi-Thread
Delphi Conference 2012 - Controlando a Concorrência em Aplicações Multi-ThreadDelphi Conference 2012 - Controlando a Concorrência em Aplicações Multi-Thread
Delphi Conference 2012 - Controlando a Concorrência em Aplicações Multi-ThreadMario Guedes
 
Threads 01: Criação e controle de threads
Threads 01: Criação e controle de threadsThreads 01: Criação e controle de threads
Threads 01: Criação e controle de threadsHelder da Rocha
 
04 - Gerenciamento de Threads - II
04 -  Gerenciamento de Threads - II04 -  Gerenciamento de Threads - II
04 - Gerenciamento de Threads - IIFabio Moura Pereira
 
Programação Concorrente - Gerenciamento de Threads - Parte II
Programação Concorrente - Gerenciamento de Threads - Parte IIProgramação Concorrente - Gerenciamento de Threads - Parte II
Programação Concorrente - Gerenciamento de Threads - Parte IIFabio Moura Pereira
 
Async/Await Pattern in C#
Async/Await Pattern in C#Async/Await Pattern in C#
Async/Await Pattern in C#Leandro Silva
 
Java e orientação a objetos - aula 01
Java e orientação a objetos - aula 01Java e orientação a objetos - aula 01
Java e orientação a objetos - aula 01John Godoi
 
Programação orientada a objetos - IV
Programação orientada a objetos - IVProgramação orientada a objetos - IV
Programação orientada a objetos - IVGabriel Faustino
 
Concorrência na Linguagem de Programação
Concorrência na Linguagem de ProgramaçãoConcorrência na Linguagem de Programação
Concorrência na Linguagem de ProgramaçãoAlexsandro Pereira
 

Semelhante a Introdução Threads Java (20)

Trabalhando com Threads em JAVA
Trabalhando com Threads em JAVATrabalhando com Threads em JAVA
Trabalhando com Threads em JAVA
 
Threads
ThreadsThreads
Threads
 
Java 13
Java 13Java 13
Java 13
 
Funcamentos de Programação Concorrente
Funcamentos de Programação ConcorrenteFuncamentos de Programação Concorrente
Funcamentos de Programação Concorrente
 
Curso de Java: Threads
Curso de Java: ThreadsCurso de Java: Threads
Curso de Java: Threads
 
Aula sobre multithreading
Aula sobre multithreadingAula sobre multithreading
Aula sobre multithreading
 
Delphi Conference 2012 - Controlando a Concorrência em Aplicações Multi-Thread
Delphi Conference 2012 - Controlando a Concorrência em Aplicações Multi-ThreadDelphi Conference 2012 - Controlando a Concorrência em Aplicações Multi-Thread
Delphi Conference 2012 - Controlando a Concorrência em Aplicações Multi-Thread
 
Threads 01: Criação e controle de threads
Threads 01: Criação e controle de threadsThreads 01: Criação e controle de threads
Threads 01: Criação e controle de threads
 
04 - Gerenciamento de Threads - II
04 -  Gerenciamento de Threads - II04 -  Gerenciamento de Threads - II
04 - Gerenciamento de Threads - II
 
Programação Concorrente - Gerenciamento de Threads - Parte II
Programação Concorrente - Gerenciamento de Threads - Parte IIProgramação Concorrente - Gerenciamento de Threads - Parte II
Programação Concorrente - Gerenciamento de Threads - Parte II
 
Singleton varianca
Singleton variancaSingleton varianca
Singleton varianca
 
Async/Await Pattern in C#
Async/Await Pattern in C#Async/Await Pattern in C#
Async/Await Pattern in C#
 
Java e orientação a objetos - aula 01
Java e orientação a objetos - aula 01Java e orientação a objetos - aula 01
Java e orientação a objetos - aula 01
 
Java1
Java1Java1
Java1
 
Programação orientada a objetos - IV
Programação orientada a objetos - IVProgramação orientada a objetos - IV
Programação orientada a objetos - IV
 
OOP Java
OOP JavaOOP Java
OOP Java
 
Threads 09: Paralelismo
Threads 09: ParalelismoThreads 09: Paralelismo
Threads 09: Paralelismo
 
Java e orientação a objetos
Java e orientação a objetosJava e orientação a objetos
Java e orientação a objetos
 
Concorrência na Linguagem de Programação
Concorrência na Linguagem de ProgramaçãoConcorrência na Linguagem de Programação
Concorrência na Linguagem de Programação
 
JavaFX 1.2
JavaFX 1.2JavaFX 1.2
JavaFX 1.2
 

Último

Conferência SC 24 | Social commerce e recursos interativos: como aplicar no s...
Conferência SC 24 | Social commerce e recursos interativos: como aplicar no s...Conferência SC 24 | Social commerce e recursos interativos: como aplicar no s...
Conferência SC 24 | Social commerce e recursos interativos: como aplicar no s...E-Commerce Brasil
 
Conferência SC 24 | Otimize sua logística reversa com opções OOH (out of home)
Conferência SC 24 | Otimize sua logística reversa com opções OOH (out of home)Conferência SC 24 | Otimize sua logística reversa com opções OOH (out of home)
Conferência SC 24 | Otimize sua logística reversa com opções OOH (out of home)E-Commerce Brasil
 
Conferência SC 2024 | De vilão a herói: como o frete vai salvar as suas vendas
Conferência SC 2024 |  De vilão a herói: como o frete vai salvar as suas vendasConferência SC 2024 |  De vilão a herói: como o frete vai salvar as suas vendas
Conferência SC 2024 | De vilão a herói: como o frete vai salvar as suas vendasE-Commerce Brasil
 
Desenvolvendo uma Abordagem Estratégica para a Gestão de Portfólio.pptx
Desenvolvendo uma Abordagem Estratégica para a Gestão de Portfólio.pptxDesenvolvendo uma Abordagem Estratégica para a Gestão de Portfólio.pptx
Desenvolvendo uma Abordagem Estratégica para a Gestão de Portfólio.pptxCoca Pitzer
 
Conferência SC 24 | Estratégias de diversificação de investimento em mídias d...
Conferência SC 24 | Estratégias de diversificação de investimento em mídias d...Conferência SC 24 | Estratégias de diversificação de investimento em mídias d...
Conferência SC 24 | Estratégias de diversificação de investimento em mídias d...E-Commerce Brasil
 
Ética NO AMBIENTE DE TRABALHO, fundamentosdas relações.pdf
Ética NO AMBIENTE DE TRABALHO,  fundamentosdas relações.pdfÉtica NO AMBIENTE DE TRABALHO,  fundamentosdas relações.pdf
Ética NO AMBIENTE DE TRABALHO, fundamentosdas relações.pdfInsttLcioEvangelista
 
Conferência SC 24 | Data Analytics e IA: o futuro do e-commerce?
Conferência SC 24 | Data Analytics e IA: o futuro do e-commerce?Conferência SC 24 | Data Analytics e IA: o futuro do e-commerce?
Conferência SC 24 | Data Analytics e IA: o futuro do e-commerce?E-Commerce Brasil
 
Conferência SC 24 | Estratégias de precificação para múltiplos canais de venda
Conferência SC 24 | Estratégias de precificação para múltiplos canais de vendaConferência SC 24 | Estratégias de precificação para múltiplos canais de venda
Conferência SC 24 | Estratégias de precificação para múltiplos canais de vendaE-Commerce Brasil
 
Conferência SC 24 | Inteligência artificial no checkout: como a automatização...
Conferência SC 24 | Inteligência artificial no checkout: como a automatização...Conferência SC 24 | Inteligência artificial no checkout: como a automatização...
Conferência SC 24 | Inteligência artificial no checkout: como a automatização...E-Commerce Brasil
 
Conferência SC 24 | A força da geolocalização impulsionada em ADS e Fullcomme...
Conferência SC 24 | A força da geolocalização impulsionada em ADS e Fullcomme...Conferência SC 24 | A força da geolocalização impulsionada em ADS e Fullcomme...
Conferência SC 24 | A força da geolocalização impulsionada em ADS e Fullcomme...E-Commerce Brasil
 
Conferência SC 24 | Gestão logística para redução de custos e fidelização
Conferência SC 24 | Gestão logística para redução de custos e fidelizaçãoConferência SC 24 | Gestão logística para redução de custos e fidelização
Conferência SC 24 | Gestão logística para redução de custos e fidelizaçãoE-Commerce Brasil
 
Introdução à Multimídia e seus aspectos.pdf
Introdução à Multimídia e seus aspectos.pdfIntrodução à Multimídia e seus aspectos.pdf
Introdução à Multimídia e seus aspectos.pdfVivianeVivicka
 
A LOGÍSTICA ESTÁ PREPARADA PARA O DECRESCIMENTO?
A LOGÍSTICA ESTÁ PREPARADA PARA O DECRESCIMENTO?A LOGÍSTICA ESTÁ PREPARADA PARA O DECRESCIMENTO?
A LOGÍSTICA ESTÁ PREPARADA PARA O DECRESCIMENTO?Michael Rada
 
66ssssssssssssssssssssssssssssss4434.pptx
66ssssssssssssssssssssssssssssss4434.pptx66ssssssssssssssssssssssssssssss4434.pptx
66ssssssssssssssssssssssssssssss4434.pptxLEANDROSPANHOL1
 
Conferência SC 2024 | Tendências e oportunidades de vender mais em 2024
Conferência SC 2024 | Tendências e oportunidades de vender mais em 2024Conferência SC 2024 | Tendências e oportunidades de vender mais em 2024
Conferência SC 2024 | Tendências e oportunidades de vender mais em 2024E-Commerce Brasil
 
Conferência SC 24 | Omnichannel: uma cultura ou apenas um recurso comercial?
Conferência SC 24 | Omnichannel: uma cultura ou apenas um recurso comercial?Conferência SC 24 | Omnichannel: uma cultura ou apenas um recurso comercial?
Conferência SC 24 | Omnichannel: uma cultura ou apenas um recurso comercial?E-Commerce Brasil
 
Conferência SC 24 | Estratégias omnicanal: transformando a logística em exper...
Conferência SC 24 | Estratégias omnicanal: transformando a logística em exper...Conferência SC 24 | Estratégias omnicanal: transformando a logística em exper...
Conferência SC 24 | Estratégias omnicanal: transformando a logística em exper...E-Commerce Brasil
 
Questionárionnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
QuestionárionnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnQuestionárionnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
QuestionárionnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnGustavo144776
 
Conferência SC 24 | Estratégias de precificação: loja própria e marketplace
Conferência SC 24 | Estratégias de precificação: loja própria e marketplaceConferência SC 24 | Estratégias de precificação: loja própria e marketplace
Conferência SC 24 | Estratégias de precificação: loja própria e marketplaceE-Commerce Brasil
 
EP GRUPO - Mídia Kit 2024 - conexão de marcas e personagens
EP GRUPO - Mídia Kit 2024 - conexão de marcas e personagensEP GRUPO - Mídia Kit 2024 - conexão de marcas e personagens
EP GRUPO - Mídia Kit 2024 - conexão de marcas e personagensLuizPauloFerreira11
 

Último (20)

Conferência SC 24 | Social commerce e recursos interativos: como aplicar no s...
Conferência SC 24 | Social commerce e recursos interativos: como aplicar no s...Conferência SC 24 | Social commerce e recursos interativos: como aplicar no s...
Conferência SC 24 | Social commerce e recursos interativos: como aplicar no s...
 
Conferência SC 24 | Otimize sua logística reversa com opções OOH (out of home)
Conferência SC 24 | Otimize sua logística reversa com opções OOH (out of home)Conferência SC 24 | Otimize sua logística reversa com opções OOH (out of home)
Conferência SC 24 | Otimize sua logística reversa com opções OOH (out of home)
 
Conferência SC 2024 | De vilão a herói: como o frete vai salvar as suas vendas
Conferência SC 2024 |  De vilão a herói: como o frete vai salvar as suas vendasConferência SC 2024 |  De vilão a herói: como o frete vai salvar as suas vendas
Conferência SC 2024 | De vilão a herói: como o frete vai salvar as suas vendas
 
Desenvolvendo uma Abordagem Estratégica para a Gestão de Portfólio.pptx
Desenvolvendo uma Abordagem Estratégica para a Gestão de Portfólio.pptxDesenvolvendo uma Abordagem Estratégica para a Gestão de Portfólio.pptx
Desenvolvendo uma Abordagem Estratégica para a Gestão de Portfólio.pptx
 
Conferência SC 24 | Estratégias de diversificação de investimento em mídias d...
Conferência SC 24 | Estratégias de diversificação de investimento em mídias d...Conferência SC 24 | Estratégias de diversificação de investimento em mídias d...
Conferência SC 24 | Estratégias de diversificação de investimento em mídias d...
 
Ética NO AMBIENTE DE TRABALHO, fundamentosdas relações.pdf
Ética NO AMBIENTE DE TRABALHO,  fundamentosdas relações.pdfÉtica NO AMBIENTE DE TRABALHO,  fundamentosdas relações.pdf
Ética NO AMBIENTE DE TRABALHO, fundamentosdas relações.pdf
 
Conferência SC 24 | Data Analytics e IA: o futuro do e-commerce?
Conferência SC 24 | Data Analytics e IA: o futuro do e-commerce?Conferência SC 24 | Data Analytics e IA: o futuro do e-commerce?
Conferência SC 24 | Data Analytics e IA: o futuro do e-commerce?
 
Conferência SC 24 | Estratégias de precificação para múltiplos canais de venda
Conferência SC 24 | Estratégias de precificação para múltiplos canais de vendaConferência SC 24 | Estratégias de precificação para múltiplos canais de venda
Conferência SC 24 | Estratégias de precificação para múltiplos canais de venda
 
Conferência SC 24 | Inteligência artificial no checkout: como a automatização...
Conferência SC 24 | Inteligência artificial no checkout: como a automatização...Conferência SC 24 | Inteligência artificial no checkout: como a automatização...
Conferência SC 24 | Inteligência artificial no checkout: como a automatização...
 
Conferência SC 24 | A força da geolocalização impulsionada em ADS e Fullcomme...
Conferência SC 24 | A força da geolocalização impulsionada em ADS e Fullcomme...Conferência SC 24 | A força da geolocalização impulsionada em ADS e Fullcomme...
Conferência SC 24 | A força da geolocalização impulsionada em ADS e Fullcomme...
 
Conferência SC 24 | Gestão logística para redução de custos e fidelização
Conferência SC 24 | Gestão logística para redução de custos e fidelizaçãoConferência SC 24 | Gestão logística para redução de custos e fidelização
Conferência SC 24 | Gestão logística para redução de custos e fidelização
 
Introdução à Multimídia e seus aspectos.pdf
Introdução à Multimídia e seus aspectos.pdfIntrodução à Multimídia e seus aspectos.pdf
Introdução à Multimídia e seus aspectos.pdf
 
A LOGÍSTICA ESTÁ PREPARADA PARA O DECRESCIMENTO?
A LOGÍSTICA ESTÁ PREPARADA PARA O DECRESCIMENTO?A LOGÍSTICA ESTÁ PREPARADA PARA O DECRESCIMENTO?
A LOGÍSTICA ESTÁ PREPARADA PARA O DECRESCIMENTO?
 
66ssssssssssssssssssssssssssssss4434.pptx
66ssssssssssssssssssssssssssssss4434.pptx66ssssssssssssssssssssssssssssss4434.pptx
66ssssssssssssssssssssssssssssss4434.pptx
 
Conferência SC 2024 | Tendências e oportunidades de vender mais em 2024
Conferência SC 2024 | Tendências e oportunidades de vender mais em 2024Conferência SC 2024 | Tendências e oportunidades de vender mais em 2024
Conferência SC 2024 | Tendências e oportunidades de vender mais em 2024
 
Conferência SC 24 | Omnichannel: uma cultura ou apenas um recurso comercial?
Conferência SC 24 | Omnichannel: uma cultura ou apenas um recurso comercial?Conferência SC 24 | Omnichannel: uma cultura ou apenas um recurso comercial?
Conferência SC 24 | Omnichannel: uma cultura ou apenas um recurso comercial?
 
Conferência SC 24 | Estratégias omnicanal: transformando a logística em exper...
Conferência SC 24 | Estratégias omnicanal: transformando a logística em exper...Conferência SC 24 | Estratégias omnicanal: transformando a logística em exper...
Conferência SC 24 | Estratégias omnicanal: transformando a logística em exper...
 
Questionárionnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
QuestionárionnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnQuestionárionnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
Questionárionnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
 
Conferência SC 24 | Estratégias de precificação: loja própria e marketplace
Conferência SC 24 | Estratégias de precificação: loja própria e marketplaceConferência SC 24 | Estratégias de precificação: loja própria e marketplace
Conferência SC 24 | Estratégias de precificação: loja própria e marketplace
 
EP GRUPO - Mídia Kit 2024 - conexão de marcas e personagens
EP GRUPO - Mídia Kit 2024 - conexão de marcas e personagensEP GRUPO - Mídia Kit 2024 - conexão de marcas e personagens
EP GRUPO - Mídia Kit 2024 - conexão de marcas e personagens
 

Introdução Threads Java

  • 1. Introdução ao uso de Threads em Java Daniel de Angelis Cordeiro Aula para a disciplina MAC 0438 – Programação Concorrente
  • 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. 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. Criando Threads Há 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. Usando Herança Usando 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. Usando a Interface Runnable A 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. Exemplo de Uso Para usar as classes Tarefa1 e Tarefa2 devemos fazer: Thread threadComHeranca = new Tarefa1(); Thread threadComRunnable = new Thread(new Tarefa2()); threadComHeranca.start(); threadComRunnable.start();
  • 8. Saída do Exemplo A 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. Estados de uma Thread Uma thread pode estar em um dos seguintes estados: ● criada; ● em execução; ● suspensa ou ● morta.
  • 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. 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. Variáveis Voláteis Variá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. 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. 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. Mais Informações Se 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. :-)