SlideShare una empresa de Scribd logo
1 de 15
Descargar para leer sin conexión
Multithreading
Prof. Adriano Teixeira de Souza
   Thread (lightweight process) é uma unidade
    básica de utilização da CPU, compreendendo um
    id, um contador de programa, registradores e
    pilha

   Compartilha seção de código, seção de dados e
    outros recursos do SO pertencentes ao um
    mesmo processo




                         Prof. Adriano Teixeira de Souza
   Capacidade de Resposta
   Compartilhamento de Recursos
   Economia na criação de processos
   Uso de Arquiteturas Multiprocessador




                         Prof. Adriano Teixeira de Souza
   Threads de Usuário
    ◦ Implementadas por bibliotecas

   Threads de Kernel
    ◦ Suportadas diretamente pelo SO




                             Prof. Adriano Teixeira de Souza
   A maioria das linguagens de programação não
    permite programação de atividades concorrentes
   Normalmente as linguagens disponibilizam
    chamadas ao SO
    ◦ A biblioteca Win32 fornece um conjunto de APIs para
      efetuar multithreading em aplicações nativas Windows
    ◦ Pthreads fornece uma biblioteca para threads em
      sistemas POSIX, como linux
    ◦ C-threads no Mach
    ◦ Threads no Solaris


                            Prof. Adriano Teixeira de Souza
   Historicamente a linguagem ADA (DoD)
    disponibilizou primitivas de concorrência porém
    a linguagem não popularizou-se no meio
    acadêmico e comercial
   Java notavelmente é a única linguagem de uso
    geral e popular a disponibilizar as primitivas de
    concorrência para o programador de aplicativos
    (threads)
    ◦ Linguagens como C, C++ e Delphi fazem
      chamadas a primitivas de multithreading do SO
   Todo programa java possui pelo menos um
    thread de controle
    ◦ main executa num thread na JVM

                           Prof. Adriano Teixeira de Souza
   Explicitamente pode-se criar uma classe derivada da
    classe Thread, do package java.lang

   É necessário redefinir o método run(), que realmente
    realiza o trabalho

   O método start() cria efetivamente a thread
    ◦ Aloca memória e inicializa um novo thread na JVM
    ◦ Chama run() para tornar o thread passível de execução

   Construtores:
    ◦ public Thread (String threadName)
    ◦ public Thread()


                                 Prof. Adriano Teixeira de Souza
   Alternativamente pode-se criar uma classe que
    implementa a interface Runnable
    public interface Runnable {
       public abstract void run();
    }

   Toda classe que implementa Runnable deve
    definir o método run()
    class Teste implements Runnable {
       public void run() {
       }
    }

                         Prof. Adriano Teixeira de Souza
   start(): inicia a execução da thread (método run)
   suspend(): suspende a execução da thread que
    está executando
   sleep(): faz a thread que está executando dormir
    por um tempo determinado
   yield(): faz a thread que está executando dormir
    por um tempo indeterminado
   resume(): resume a execução de uma thread
    suspensa
   stop(): termina a execução de uma thread; a
    thread não pode ser mais executada.


                           Prof. Adriano Teixeira de Souza
   join(): método que espera o término da THREAD
    para qual foi enviada a mensagem para ser
    liberada.
   interrupt(): método que interrompe a execução
    de uma THREAD.
   interrupted(): método que testa se uma
    THREAD está ou não interrompida.




                         Prof. Adriano Teixeira de Souza
nascimento




                                             start



                                             pronto

                   Notify
                  Notifyall                                                  Conclusão E/S
                                    yeld            Despachar
                                               (alocar Processador)
Tempo expira
                           wait
                                                                      Inicia E/S
                                           executando
               esperando


                                                                                   bloqueado

                                                        completo
                                        sleep
                       adormecido




                                                      morto
                                                        morto


                                  Prof. Adriano Teixeira de Souza
   Além do programa multithread, outros threads
    executam assincronamente para a JVM
    ◦ Gerência de memória: coleta de lixo
    ◦ Eventos de temporização
    ◦ Controles gráficos




                              Prof. Adriano Teixeira de Souza
   Tipicamente a JVM é implementada sobre um SO
    host, ocultando detalhes de implementação

   Não indica como threads serão mapeados
    ◦ Windows NT modelo 1-1
    ◦ Solaris 2 modelo N-1 e M-n posteriormente




                              Prof. Adriano Teixeira de Souza
Prof. Adriano Teixeira de Souza
Prof. Adriano Teixeira de Souza

Más contenido relacionado

La actualidad más candente

Tradução de Aplicativos Livres
Tradução de Aplicativos LivresTradução de Aplicativos Livres
Tradução de Aplicativos LivresÁtila Camurça
 
Linux - Customização e Repositórios Off-line
Linux - Customização e Repositórios Off-lineLinux - Customização e Repositórios Off-line
Linux - Customização e Repositórios Off-lineÁtila Camurça
 
Gerências de Processos: Escalonamento de CPU
Gerências de Processos: Escalonamento de CPUGerências de Processos: Escalonamento de CPU
Gerências de Processos: Escalonamento de CPUAlexandre Duarte
 
Aplicativos - Ubuntu COMSOLiD
Aplicativos - Ubuntu COMSOLiDAplicativos - Ubuntu COMSOLiD
Aplicativos - Ubuntu COMSOLiDÁtila Camurça
 
Sistemas Operacionais - Gnu/Linux Montando e Desmontando Sistemas de Arquivos
Sistemas Operacionais - Gnu/Linux Montando e Desmontando Sistemas de ArquivosSistemas Operacionais - Gnu/Linux Montando e Desmontando Sistemas de Arquivos
Sistemas Operacionais - Gnu/Linux Montando e Desmontando Sistemas de ArquivosLuiz Arthur
 
Cap1 exercicios comandos linux resolucao part i
Cap1 exercicios comandos linux   resolucao part iCap1 exercicios comandos linux   resolucao part i
Cap1 exercicios comandos linux resolucao part iportal_Do_estudante
 
Introdução ao Linux - aula 03 e 04
Introdução ao Linux - aula 03 e 04Introdução ao Linux - aula 03 e 04
Introdução ao Linux - aula 03 e 04Renan Aryel
 
(ACH2044) Sistemas Operacionais - Aula 02
(ACH2044) Sistemas Operacionais - Aula 02(ACH2044) Sistemas Operacionais - Aula 02
(ACH2044) Sistemas Operacionais - Aula 02Norton Trevisan Roman
 
Plataforma java: detalhes da JVM
Plataforma java: detalhes da JVMPlataforma java: detalhes da JVM
Plataforma java: detalhes da JVMCaelum
 
Imergindo jvm[Apresentação ]
Imergindo jvm[Apresentação ]Imergindo jvm[Apresentação ]
Imergindo jvm[Apresentação ]Otávio Santana
 
QConSP: Do cache ao cluster, escalando com Rails
QConSP: Do cache ao cluster, escalando com RailsQConSP: Do cache ao cluster, escalando com Rails
QConSP: Do cache ao cluster, escalando com Railsadrianoalmeida7
 
Kubuntu filipe simao n11 12 l
Kubuntu filipe simao n11 12 lKubuntu filipe simao n11 12 l
Kubuntu filipe simao n11 12 lginho17
 
Quero Slack! (Parte 3)
Quero Slack! (Parte 3)Quero Slack! (Parte 3)
Quero Slack! (Parte 3)Felipe Santos
 
Definição de processos
Definição de processosDefinição de processos
Definição de processosRodrigo Almeida
 

La actualidad más candente (20)

Tradução de Aplicativos Livres
Tradução de Aplicativos LivresTradução de Aplicativos Livres
Tradução de Aplicativos Livres
 
Linux - Customização e Repositórios Off-line
Linux - Customização e Repositórios Off-lineLinux - Customização e Repositórios Off-line
Linux - Customização e Repositórios Off-line
 
Gerências de Processos: Escalonamento de CPU
Gerências de Processos: Escalonamento de CPUGerências de Processos: Escalonamento de CPU
Gerências de Processos: Escalonamento de CPU
 
Aplicativos - Ubuntu COMSOLiD
Aplicativos - Ubuntu COMSOLiDAplicativos - Ubuntu COMSOLiD
Aplicativos - Ubuntu COMSOLiD
 
Sistemas Operacionais - Gnu/Linux Montando e Desmontando Sistemas de Arquivos
Sistemas Operacionais - Gnu/Linux Montando e Desmontando Sistemas de ArquivosSistemas Operacionais - Gnu/Linux Montando e Desmontando Sistemas de Arquivos
Sistemas Operacionais - Gnu/Linux Montando e Desmontando Sistemas de Arquivos
 
Cap1 exercicios comandos linux resolucao part i
Cap1 exercicios comandos linux   resolucao part iCap1 exercicios comandos linux   resolucao part i
Cap1 exercicios comandos linux resolucao part i
 
Introdução ao Linux - aula 03 e 04
Introdução ao Linux - aula 03 e 04Introdução ao Linux - aula 03 e 04
Introdução ao Linux - aula 03 e 04
 
(ACH2044) Sistemas Operacionais - Aula 02
(ACH2044) Sistemas Operacionais - Aula 02(ACH2044) Sistemas Operacionais - Aula 02
(ACH2044) Sistemas Operacionais - Aula 02
 
Plataforma java: detalhes da JVM
Plataforma java: detalhes da JVMPlataforma java: detalhes da JVM
Plataforma java: detalhes da JVM
 
Imergindo jvm[Apresentação ]
Imergindo jvm[Apresentação ]Imergindo jvm[Apresentação ]
Imergindo jvm[Apresentação ]
 
QConSP: Do cache ao cluster, escalando com Rails
QConSP: Do cache ao cluster, escalando com RailsQConSP: Do cache ao cluster, escalando com Rails
QConSP: Do cache ao cluster, escalando com Rails
 
Imergindo na JVM
Imergindo na JVMImergindo na JVM
Imergindo na JVM
 
Kubuntu filipe simao n11 12 l
Kubuntu filipe simao n11 12 lKubuntu filipe simao n11 12 l
Kubuntu filipe simao n11 12 l
 
Introducing Ruby
Introducing RubyIntroducing Ruby
Introducing Ruby
 
Quero Slack! (Parte 3)
Quero Slack! (Parte 3)Quero Slack! (Parte 3)
Quero Slack! (Parte 3)
 
Tipos de sistemas operacionais
Tipos de sistemas operacionaisTipos de sistemas operacionais
Tipos de sistemas operacionais
 
Instrucoes
InstrucoesInstrucoes
Instrucoes
 
Definição de processos
Definição de processosDefinição de processos
Definição de processos
 
OpenSolaris a Céu Aberto
OpenSolaris a Céu AbertoOpenSolaris a Céu Aberto
OpenSolaris a Céu Aberto
 
4 cpu
4 cpu4 cpu
4 cpu
 

Similar a Sistemas Distribuídos - Multithreading

Java recursos avançados - multithreading
Java   recursos avançados - multithreadingJava   recursos avançados - multithreading
Java recursos avançados - multithreadingArmando Daniel
 
Programação Concorrente - Aula 03
Programação Concorrente - Aula 03Programação Concorrente - Aula 03
Programação Concorrente - Aula 03thomasdacosta
 
Sistemas Distribuídos - Computação Paralela
Sistemas Distribuídos - Computação ParalelaSistemas Distribuídos - Computação Paralela
Sistemas Distribuídos - Computação ParalelaAdriano Teixeira de Souza
 
Sistemas Distribuídos - Computação Paralela - Introdução
Sistemas Distribuídos - Computação Paralela - IntroduçãoSistemas Distribuídos - Computação Paralela - Introdução
Sistemas Distribuídos - Computação Paralela - IntroduçãoAdriano Teixeira de Souza
 
Java basico modulo_01
Java basico modulo_01Java basico modulo_01
Java basico modulo_01Daniel Alves
 
Java basico modulo_01
Java basico modulo_01Java basico modulo_01
Java basico modulo_01rollbackpt
 
Curso Java Basico] Aula 67: Criando Threads + metodos start, run e sleep
Curso Java Basico] Aula 67: Criando Threads + metodos start, run e sleepCurso Java Basico] Aula 67: Criando Threads + metodos start, run e sleep
Curso Java Basico] Aula 67: Criando Threads + metodos start, run e sleepLoiane Groner
 
Apostila Treinamento AvançAdo Em Linux
Apostila Treinamento AvançAdo Em LinuxApostila Treinamento AvançAdo Em Linux
Apostila Treinamento AvançAdo Em Linuxeliezer
 
Apostila Treinamento AvançAdo Em Linux
Apostila Treinamento AvançAdo Em LinuxApostila Treinamento AvançAdo Em Linux
Apostila Treinamento AvançAdo Em Linuxeliezer
 
Apostila Treinamento AvançAdo Em Linux
Apostila Treinamento AvançAdo Em LinuxApostila Treinamento AvançAdo Em Linux
Apostila Treinamento AvançAdo Em Linuxguest7a481e8
 
Java Fundamentos
Java FundamentosJava Fundamentos
Java FundamentosWilson Lima
 

Similar a Sistemas Distribuídos - Multithreading (20)

Java recursos avançados - multithreading
Java   recursos avançados - multithreadingJava   recursos avançados - multithreading
Java recursos avançados - multithreading
 
THREADS JAVA
THREADS JAVATHREADS JAVA
THREADS JAVA
 
Programação Concorrente - Aula 03
Programação Concorrente - Aula 03Programação Concorrente - Aula 03
Programação Concorrente - Aula 03
 
Sistemas Distribuídos - Computação Paralela
Sistemas Distribuídos - Computação ParalelaSistemas Distribuídos - Computação Paralela
Sistemas Distribuídos - Computação Paralela
 
Sistemas Distribuídos - Computação Paralela - Introdução
Sistemas Distribuídos - Computação Paralela - IntroduçãoSistemas Distribuídos - Computação Paralela - Introdução
Sistemas Distribuídos - Computação Paralela - Introdução
 
Thread Java
Thread JavaThread Java
Thread Java
 
Java basico modulo_01
Java basico modulo_01Java basico modulo_01
Java basico modulo_01
 
Java basico modulo_01
Java basico modulo_01Java basico modulo_01
Java basico modulo_01
 
Java basico modulo_01
Java basico modulo_01Java basico modulo_01
Java basico modulo_01
 
Java basico modulo_01
Java basico modulo_01Java basico modulo_01
Java basico modulo_01
 
Linguagem Java, fundamentos da linguagem Java
Linguagem Java, fundamentos da linguagem JavaLinguagem Java, fundamentos da linguagem Java
Linguagem Java, fundamentos da linguagem Java
 
Curso Java Basico] Aula 67: Criando Threads + metodos start, run e sleep
Curso Java Basico] Aula 67: Criando Threads + metodos start, run e sleepCurso Java Basico] Aula 67: Criando Threads + metodos start, run e sleep
Curso Java Basico] Aula 67: Criando Threads + metodos start, run e sleep
 
Net - Threads
Net - ThreadsNet - Threads
Net - Threads
 
Apostila Treinamento AvançAdo Em Linux
Apostila Treinamento AvançAdo Em LinuxApostila Treinamento AvançAdo Em Linux
Apostila Treinamento AvançAdo Em Linux
 
Apostila Treinamento AvançAdo Em Linux
Apostila Treinamento AvançAdo Em LinuxApostila Treinamento AvançAdo Em Linux
Apostila Treinamento AvançAdo Em Linux
 
Apostila Treinamento AvançAdo Em Linux
Apostila Treinamento AvançAdo Em LinuxApostila Treinamento AvançAdo Em Linux
Apostila Treinamento AvançAdo Em Linux
 
Java20141215 17[1]
Java20141215 17[1]Java20141215 17[1]
Java20141215 17[1]
 
POO - Aula 1 introducao
POO - Aula 1   introducaoPOO - Aula 1   introducao
POO - Aula 1 introducao
 
Java Fundamentos
Java FundamentosJava Fundamentos
Java Fundamentos
 
1.introducao java
1.introducao java1.introducao java
1.introducao java
 

Más de Adriano Teixeira de Souza

Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...
Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...
Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...Adriano Teixeira de Souza
 
Estrutura de dados em Java - Árvores Binárias
Estrutura de dados em Java - Árvores BináriasEstrutura de dados em Java - Árvores Binárias
Estrutura de dados em Java - Árvores BináriasAdriano Teixeira de Souza
 
Estrutura de dados em Java - Filas com lista encadeada
Estrutura de dados em Java - Filas com lista encadeada Estrutura de dados em Java - Filas com lista encadeada
Estrutura de dados em Java - Filas com lista encadeada Adriano Teixeira de Souza
 
Estrutura de dados em Java - Ponteiros e Alocação de Memória
Estrutura de dados em Java - Ponteiros e Alocação de Memória Estrutura de dados em Java - Ponteiros e Alocação de Memória
Estrutura de dados em Java - Ponteiros e Alocação de Memória Adriano Teixeira de Souza
 
Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)Adriano Teixeira de Souza
 
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)Adriano Teixeira de Souza
 
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)Adriano Teixeira de Souza
 
Estrutura de Dados em Java (Revisão de Algoritimos em Java)
Estrutura de Dados em Java (Revisão de Algoritimos em Java)Estrutura de Dados em Java (Revisão de Algoritimos em Java)
Estrutura de Dados em Java (Revisão de Algoritimos em Java)Adriano Teixeira de Souza
 
Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMS
Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMSSistemas Distribuídos - Comunicacao Distribuida - Middleware - JMS
Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMSAdriano Teixeira de Souza
 
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)Adriano Teixeira de Souza
 
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em Java
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em JavaParadigmas de Linguagens de Programação - Gerenciamento de Memória em Java
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em JavaAdriano Teixeira de Souza
 
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...Adriano Teixeira de Souza
 
Ferramentas para desenvolvimento web com produtividade - Slide Artigo (2009)
Ferramentas para desenvolvimento web com produtividade -  Slide Artigo (2009)Ferramentas para desenvolvimento web com produtividade -  Slide Artigo (2009)
Ferramentas para desenvolvimento web com produtividade - Slide Artigo (2009)Adriano Teixeira de Souza
 

Más de Adriano Teixeira de Souza (20)

Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...
Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...
Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...
 
Estrutura de dados em Java - Árvores Binárias
Estrutura de dados em Java - Árvores BináriasEstrutura de dados em Java - Árvores Binárias
Estrutura de dados em Java - Árvores Binárias
 
Estrutura de dados em Java - Pilhas
Estrutura de dados em Java - PilhasEstrutura de dados em Java - Pilhas
Estrutura de dados em Java - Pilhas
 
Estrutura de dados em Java - Filas com lista encadeada
Estrutura de dados em Java - Filas com lista encadeada Estrutura de dados em Java - Filas com lista encadeada
Estrutura de dados em Java - Filas com lista encadeada
 
Estrutura de dados em Java - Filas
Estrutura de dados em Java - FilasEstrutura de dados em Java - Filas
Estrutura de dados em Java - Filas
 
Estrutura de dados em Java - Ponteiros e Alocação de Memória
Estrutura de dados em Java - Ponteiros e Alocação de Memória Estrutura de dados em Java - Ponteiros e Alocação de Memória
Estrutura de dados em Java - Ponteiros e Alocação de Memória
 
Estrutura de dados em Java - Recursividade
Estrutura de dados em Java - RecursividadeEstrutura de dados em Java - Recursividade
Estrutura de dados em Java - Recursividade
 
Estrutura de dados em Java - Filas
Estrutura de dados em Java - Filas Estrutura de dados em Java - Filas
Estrutura de dados em Java - Filas
 
Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)
 
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
 
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)
 
Estrutura de Dados em Java (Revisão de Algoritimos em Java)
Estrutura de Dados em Java (Revisão de Algoritimos em Java)Estrutura de Dados em Java (Revisão de Algoritimos em Java)
Estrutura de Dados em Java (Revisão de Algoritimos em Java)
 
Estrutura de Dados em Java (Introdução)
Estrutura de Dados em Java (Introdução)Estrutura de Dados em Java (Introdução)
Estrutura de Dados em Java (Introdução)
 
Responsive web design
Responsive web designResponsive web design
Responsive web design
 
Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMS
Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMSSistemas Distribuídos - Comunicacao Distribuida - Middleware - JMS
Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMS
 
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
 
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em Java
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em JavaParadigmas de Linguagens de Programação - Gerenciamento de Memória em Java
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em Java
 
Estrutura de dados - Árvores Binárias
Estrutura de dados - Árvores BináriasEstrutura de dados - Árvores Binárias
Estrutura de dados - Árvores Binárias
 
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
 
Ferramentas para desenvolvimento web com produtividade - Slide Artigo (2009)
Ferramentas para desenvolvimento web com produtividade -  Slide Artigo (2009)Ferramentas para desenvolvimento web com produtividade -  Slide Artigo (2009)
Ferramentas para desenvolvimento web com produtividade - Slide Artigo (2009)
 

Sistemas Distribuídos - Multithreading

  • 2. Thread (lightweight process) é uma unidade básica de utilização da CPU, compreendendo um id, um contador de programa, registradores e pilha  Compartilha seção de código, seção de dados e outros recursos do SO pertencentes ao um mesmo processo Prof. Adriano Teixeira de Souza
  • 3. Capacidade de Resposta  Compartilhamento de Recursos  Economia na criação de processos  Uso de Arquiteturas Multiprocessador Prof. Adriano Teixeira de Souza
  • 4. Threads de Usuário ◦ Implementadas por bibliotecas  Threads de Kernel ◦ Suportadas diretamente pelo SO Prof. Adriano Teixeira de Souza
  • 5. A maioria das linguagens de programação não permite programação de atividades concorrentes  Normalmente as linguagens disponibilizam chamadas ao SO ◦ A biblioteca Win32 fornece um conjunto de APIs para efetuar multithreading em aplicações nativas Windows ◦ Pthreads fornece uma biblioteca para threads em sistemas POSIX, como linux ◦ C-threads no Mach ◦ Threads no Solaris Prof. Adriano Teixeira de Souza
  • 6. Historicamente a linguagem ADA (DoD) disponibilizou primitivas de concorrência porém a linguagem não popularizou-se no meio acadêmico e comercial  Java notavelmente é a única linguagem de uso geral e popular a disponibilizar as primitivas de concorrência para o programador de aplicativos (threads) ◦ Linguagens como C, C++ e Delphi fazem chamadas a primitivas de multithreading do SO  Todo programa java possui pelo menos um thread de controle ◦ main executa num thread na JVM Prof. Adriano Teixeira de Souza
  • 7. Explicitamente pode-se criar uma classe derivada da classe Thread, do package java.lang  É necessário redefinir o método run(), que realmente realiza o trabalho  O método start() cria efetivamente a thread ◦ Aloca memória e inicializa um novo thread na JVM ◦ Chama run() para tornar o thread passível de execução  Construtores: ◦ public Thread (String threadName) ◦ public Thread() Prof. Adriano Teixeira de Souza
  • 8. Alternativamente pode-se criar uma classe que implementa a interface Runnable public interface Runnable { public abstract void run(); }  Toda classe que implementa Runnable deve definir o método run() class Teste implements Runnable { public void run() { } } Prof. Adriano Teixeira de Souza
  • 9. start(): inicia a execução da thread (método run)  suspend(): suspende a execução da thread que está executando  sleep(): faz a thread que está executando dormir por um tempo determinado  yield(): faz a thread que está executando dormir por um tempo indeterminado  resume(): resume a execução de uma thread suspensa  stop(): termina a execução de uma thread; a thread não pode ser mais executada. Prof. Adriano Teixeira de Souza
  • 10. join(): método que espera o término da THREAD para qual foi enviada a mensagem para ser liberada.  interrupt(): método que interrompe a execução de uma THREAD.  interrupted(): método que testa se uma THREAD está ou não interrompida. Prof. Adriano Teixeira de Souza
  • 11. nascimento start pronto Notify Notifyall Conclusão E/S yeld Despachar (alocar Processador) Tempo expira wait Inicia E/S executando esperando bloqueado completo sleep adormecido morto morto Prof. Adriano Teixeira de Souza
  • 12. Além do programa multithread, outros threads executam assincronamente para a JVM ◦ Gerência de memória: coleta de lixo ◦ Eventos de temporização ◦ Controles gráficos Prof. Adriano Teixeira de Souza
  • 13. Tipicamente a JVM é implementada sobre um SO host, ocultando detalhes de implementação  Não indica como threads serão mapeados ◦ Windows NT modelo 1-1 ◦ Solaris 2 modelo N-1 e M-n posteriormente Prof. Adriano Teixeira de Souza