SlideShare uma empresa Scribd logo
1 de 20
ANHANGUERA – 2016.1
PROGRAMAÇÃO CONCORRENTE
AULA 03 – THREADS
Prof. Thomás da Costa
thomascosta@aedu.com
PROGRAMAÇÃO CONCORRENTE – Prof. Thomás da Costa
THREADS
THREADS
PROGRAMAÇÃO CONCORRENTE – Prof. Thomás da Costa
THREADS
Threads
Detalhes:
• No desenvolvimento de software, precisamos muitas vezes efetuar
operações paralelas.
• Executando operações paralelas, nosso programa continua seu
processamento natural enquanto espera a conclusão de outras atividades.
• Os processos paralelos podem ser definidos como um fluxo de controle
ativo dentro do nosso programa.
PROGRAMAÇÃO CONCORRENTE – Prof. Thomás da Costa
THREADS
Threads
Processo 1
Processo 2
Processo 3
Sem Threads
Processo 1
Processo 2
Processo 3
Programa Principal
Com Threads
PROGRAMAÇÃO CONCORRENTE – Prof. Thomás da Costa
Threads
O que é?:
THREADS
É fluxo alternativo e ativo dentro do nosso programa que executa
paralelamente com o software principal e outros fluxos. Possui um bloco de
instruções ou comandos que serão executados.
PROGRAMAÇÃO CONCORRENTE – Prof. Thomás da Costa
Threads
Detalhes:
• Isso é a base de Programação Concorrente.
• Conhecido como multiprogramação.
• Boa parte das aplicações desenvolvidas nos dias atuais, utiliza de threads
para processamento de informações e melhoria de performance.
• Tarefas podem ser paralelizadas em vários fluxos.
• Tarefas podem ser distribuídas quando utilizamos threads.
• Hoje grandes aplicações trabalham com threads, muitas delas distribuídas
em computadores diferentes.
• São compostas por instruções de comandos de uma linguagem. No nosso
caso o Java.
• Aproveitamos melhor os recursos de um sistema operacional.
THREADS
PROGRAMAÇÃO CONCORRENTE – Prof. Thomás da Costa
Threads
Detalhes:
THREADS
• São conhecidas como processos leves.
• Como foi dito, fazem parte do programa principal ou processo tradicional.
• Possuem prioridades.
• Podem possuir um identificador.
• Podemos iniciar, parar ou colocar uma thread em espera.
• São gerenciadas pelo sistema operacional.
PROGRAMAÇÃO CONCORRENTE – Prof. Thomás da Costa
Threads
Ciclo de Vida:
THREADS
Fonte: http://www3.ntu.edu.sg/home/ehchua/programming/java/j5e_multithreading.html
PROGRAMAÇÃO CONCORRENTE – Prof. Thomás da Costa
Threads
Criando uma Thread:
THREADS
public class ExemploThread extends Thread {
@Override
public void run() {
}
}
• Para criar uma Thread utilizamos a classe Thread.
• As instruções de execução de uma Thread são desenvolvidas dentro do
método run().
Método que será executado pela Thread
Classe Thread
PROGRAMAÇÃO CONCORRENTE – Prof. Thomás da Costa
Exemplo 01
package edu.anhanguera.prc.aula03;
public class ExemploThread extends Thread {
@Override
public void run() {
System.out.println("Executando ExemploThread");
}
public static void main(String[] args) {
ExemploThread exemploThread = new ExemploThread();
exemploThread.start();
}
}
PROGRAMAÇÃO CONCORRENTE – Prof. Thomás da Costa
Threads
Detalhes:
• Neste modelo, utilizamos uma classe como herança.
• Caso seja necessário utilizar outra classe como herança, podemos ter
problemas, pois o Java não possui herança múltipla.
• Para iniciar uma Thread utilizamos o método start().
THREADS
PROGRAMAÇÃO CONCORRENTE – Prof. Thomás da Costa
Threads
Criando uma Thread:
THREADS
• Podemos utilizar uma outra forma de criar uma Thread: utilizando a
interface Runnable.
public class ExemploRunnable implements Runnable {
public void run() {
}
}
Método que será executado pela Thread
Interface Runnable
PROGRAMAÇÃO CONCORRENTE – Prof. Thomás da Costa
Exemplo 02
package edu.anhanguera.prc.aula03;
public class ExemploRunnable implements Runnable {
public void run() {
System.out.println("Executando ExemploRunnable");
}
public static void main(String[] args) {
ExemploRunnable exemploRunnable = new ExemploRunnable();
Thread thread = new Thread(exemploRunnable);
thread.start();
}
}
PROGRAMAÇÃO CONCORRENTE – Prof. Thomás da Costa
Threads
Detalhes:
• Neste modelo utilizamos uma interface.
• Caso seja necessário utilizar outra classe como herança ou até mesmo uma
interface não teremos problemas.
• Esta é a melhor forma de criar e utilizar Threads.
• Precisamos instanciar a classe Thread e passar como argumento a classe
com a interface Runnable implementada.
• Para iniciar uma Thread utilizamos o método start() da classe Thread.
THREADS
PROGRAMAÇÃO CONCORRENTE – Prof. Thomás da Costa
Exemplo 03
package edu.anhanguera.prc.aula03;
import java.util.concurrent.ThreadLocalRandom;
public class ExemploNumIntRandomico implements Runnable {
public static int parar = 0;
public void run() {
while (parar == 0) {
int num = ThreadLocalRandom.current().nextInt(0, 9);
System.out.println("Numero: " + num);
try {
Thread.sleep(500);
} catch (InterruptedException e) {}
}
}
public static void main(String[] args) {
ExemploNumIntRandomico numIntRandomico = new ExemploNumIntRandomico();
Thread thread = new Thread(numIntRandomico);
thread.start();
}
}
PROGRAMAÇÃO CONCORRENTE – Prof. Thomás da Costa
Threads
• O comando Thread.sleep é estático.
• Sua principal função é deixar a Thread pausada ou adormecida durante um
período de tempo.
• O parâmetro do método é a quantidade de milissegundos que a Thread
deve ficar adormecida.
THREADS
Detalhes:
PROGRAMAÇÃO CONCORRENTE – Prof. Thomás da Costa
Exemplo 04
package edu.anhanguera.prc.aula03;
import java.util.concurrent.ThreadLocalRandom;
public class ExemploNumDoubleRandomico implements Runnable {
public static int parar = 0;
public void run() {
while (parar == 0) {
double num = ThreadLocalRandom.current().nextDouble(0, 9);
System.out.println("Numero: " + num);
try {
Thread.sleep(2000);
} catch (InterruptedException e) {}
}
}
public static void main(String[] args) {
ExemploNumDoubleRandomico randomico = new ExemploNumDoubleRandomico();
Thread thread = new Thread(randomico);
thread.start();
}
}
PROGRAMAÇÃO CONCORRENTE – Prof. Thomás da Costa
package edu.anhanguera.prc.aula03;
public class ExemploNumerosRandomicos {
public static void main(String[] args) {
ExemploNumDoubleRandomico doubleRandomico = new ExemploNumDoubleRandomico();
ExemploNumIntRandomico intRandomico = new ExemploNumIntRandomico();
Thread threadDouble = new Thread(doubleRandomico);
threadDouble.start();
Thread threadInt = new Thread(intRandomico);
threadInt.start();
try {
Thread.sleep(10000);
ExemploNumDoubleRandomico.parar = 1;
System.out.println("ExemploNumDoubleRandomico finalizado");
Thread.sleep(10000);
ExemploNumIntRandomico.parar = 1;
System.out.println("ExemploNumIntRandomico finalizado");
} catch (InterruptedException e) {}
}
}
PROGRAMAÇÃO CONCORRENTE – Prof. Thomás da Costa
Resumo
• Threads são blocos de instruções que executam em paralelo ao programa
principal.
• Ajudam na performance de um aplicação.
• As Threads possuem um ciclo de vida.
• Podemos utilizar a classe Thread ou a interface Runnable para implementar
uma Thread.
THREADS
Obrigado !!!
ANHANGUERA – 2016.1

Mais conteúdo relacionado

Mais procurados

Algoritmos e Técnicas de Programação - Aula 01
Algoritmos e Técnicas de Programação - Aula 01Algoritmos e Técnicas de Programação - Aula 01
Algoritmos e Técnicas de Programação - Aula 01thomasdacosta
 
Algoritmos e Estrutura de Dados - Aula 02
Algoritmos e Estrutura de Dados - Aula 02Algoritmos e Estrutura de Dados - Aula 02
Algoritmos e Estrutura de Dados - Aula 02thomasdacosta
 
Algoritmos e Técnicas de Programação - Aula 05
Algoritmos e Técnicas de Programação - Aula 05Algoritmos e Técnicas de Programação - Aula 05
Algoritmos e Técnicas de Programação - Aula 05thomasdacosta
 
Algoritmos e Estrutura de Dados - Aula 01
Algoritmos e Estrutura de Dados - Aula 01Algoritmos e Estrutura de Dados - Aula 01
Algoritmos e Estrutura de Dados - Aula 01thomasdacosta
 
Algoritmos e Técnicas de Programação - Aula 04
Algoritmos e Técnicas de Programação - Aula 04Algoritmos e Técnicas de Programação - Aula 04
Algoritmos e Técnicas de Programação - Aula 04thomasdacosta
 
Algoritmos e Técnicas de Programação - Aula 02
Algoritmos e Técnicas de Programação - Aula 02Algoritmos e Técnicas de Programação - Aula 02
Algoritmos e Técnicas de Programação - Aula 02thomasdacosta
 
Algoritmos e Técnicas de Programação - Aula 03
Algoritmos e Técnicas de Programação - Aula 03Algoritmos e Técnicas de Programação - Aula 03
Algoritmos e Técnicas de Programação - Aula 03thomasdacosta
 
Programação Concorrente - Curso Completo
Programação Concorrente - Curso CompletoProgramação Concorrente - Curso Completo
Programação Concorrente - Curso Completothomasdacosta
 
Programação Estruturada 2 - Aula 01
Programação Estruturada 2 - Aula 01Programação Estruturada 2 - Aula 01
Programação Estruturada 2 - Aula 01thomasdacosta
 
Programação Estruturada 2 - Aula 06
Programação Estruturada 2 - Aula 06Programação Estruturada 2 - Aula 06
Programação Estruturada 2 - Aula 06thomasdacosta
 
LAB 01 - Programação Estruturada 2
LAB 01 - Programação Estruturada 2LAB 01 - Programação Estruturada 2
LAB 01 - Programação Estruturada 2thomasdacosta
 
Programação de Sistemas Distribuídos - Aula 01
Programação de Sistemas Distribuídos - Aula 01Programação de Sistemas Distribuídos - Aula 01
Programação de Sistemas Distribuídos - Aula 01thomasdacosta
 
Programação Concorrente - Aula 01
Programação Concorrente - Aula 01Programação Concorrente - Aula 01
Programação Concorrente - Aula 01thomasdacosta
 
Conceitos Fundamentais de Programacao
Conceitos Fundamentais de ProgramacaoConceitos Fundamentais de Programacao
Conceitos Fundamentais de ProgramacaoJorge Cardoso
 
Conceitos e técnicas de programação aula 2
Conceitos e técnicas de programação aula 2Conceitos e técnicas de programação aula 2
Conceitos e técnicas de programação aula 2Robson Ferreira
 
Introdução ao Deep Learning com o TensorFlow
Introdução ao Deep Learning com o TensorFlowIntrodução ao Deep Learning com o TensorFlow
Introdução ao Deep Learning com o TensorFlowMauro Pichiliani
 
Oficina de Lógica de Programação - Uso do Scratch e do GvR
Oficina de Lógica de Programação - Uso do Scratch e do GvROficina de Lógica de Programação - Uso do Scratch e do GvR
Oficina de Lógica de Programação - Uso do Scratch e do GvRCiro Matheus
 
Paradigmas de Linguagens de Programação - Estruturas de Controle
Paradigmas de Linguagens de Programação - Estruturas de ControleParadigmas de Linguagens de Programação - Estruturas de Controle
Paradigmas de Linguagens de Programação - Estruturas de ControleAdriano Teixeira de Souza
 

Mais procurados (20)

Algoritmos e Técnicas de Programação - Aula 01
Algoritmos e Técnicas de Programação - Aula 01Algoritmos e Técnicas de Programação - Aula 01
Algoritmos e Técnicas de Programação - Aula 01
 
Algoritmos e Estrutura de Dados - Aula 02
Algoritmos e Estrutura de Dados - Aula 02Algoritmos e Estrutura de Dados - Aula 02
Algoritmos e Estrutura de Dados - Aula 02
 
Java primeiros-passos
Java primeiros-passosJava primeiros-passos
Java primeiros-passos
 
Algoritmos e Técnicas de Programação - Aula 05
Algoritmos e Técnicas de Programação - Aula 05Algoritmos e Técnicas de Programação - Aula 05
Algoritmos e Técnicas de Programação - Aula 05
 
Algoritmos e Estrutura de Dados - Aula 01
Algoritmos e Estrutura de Dados - Aula 01Algoritmos e Estrutura de Dados - Aula 01
Algoritmos e Estrutura de Dados - Aula 01
 
Algoritmos e Técnicas de Programação - Aula 04
Algoritmos e Técnicas de Programação - Aula 04Algoritmos e Técnicas de Programação - Aula 04
Algoritmos e Técnicas de Programação - Aula 04
 
Algoritmos e Técnicas de Programação - Aula 02
Algoritmos e Técnicas de Programação - Aula 02Algoritmos e Técnicas de Programação - Aula 02
Algoritmos e Técnicas de Programação - Aula 02
 
Algoritmos e Técnicas de Programação - Aula 03
Algoritmos e Técnicas de Programação - Aula 03Algoritmos e Técnicas de Programação - Aula 03
Algoritmos e Técnicas de Programação - Aula 03
 
Programação Concorrente - Curso Completo
Programação Concorrente - Curso CompletoProgramação Concorrente - Curso Completo
Programação Concorrente - Curso Completo
 
Programação Estruturada 2 - Aula 01
Programação Estruturada 2 - Aula 01Programação Estruturada 2 - Aula 01
Programação Estruturada 2 - Aula 01
 
Programação Estruturada 2 - Aula 06
Programação Estruturada 2 - Aula 06Programação Estruturada 2 - Aula 06
Programação Estruturada 2 - Aula 06
 
LAB 01 - Programação Estruturada 2
LAB 01 - Programação Estruturada 2LAB 01 - Programação Estruturada 2
LAB 01 - Programação Estruturada 2
 
Programação de Sistemas Distribuídos - Aula 01
Programação de Sistemas Distribuídos - Aula 01Programação de Sistemas Distribuídos - Aula 01
Programação de Sistemas Distribuídos - Aula 01
 
Programação Concorrente - Aula 01
Programação Concorrente - Aula 01Programação Concorrente - Aula 01
Programação Concorrente - Aula 01
 
Conceitos Fundamentais de Programacao
Conceitos Fundamentais de ProgramacaoConceitos Fundamentais de Programacao
Conceitos Fundamentais de Programacao
 
Ip 01 logica
Ip 01 logicaIp 01 logica
Ip 01 logica
 
Conceitos e técnicas de programação aula 2
Conceitos e técnicas de programação aula 2Conceitos e técnicas de programação aula 2
Conceitos e técnicas de programação aula 2
 
Introdução ao Deep Learning com o TensorFlow
Introdução ao Deep Learning com o TensorFlowIntrodução ao Deep Learning com o TensorFlow
Introdução ao Deep Learning com o TensorFlow
 
Oficina de Lógica de Programação - Uso do Scratch e do GvR
Oficina de Lógica de Programação - Uso do Scratch e do GvROficina de Lógica de Programação - Uso do Scratch e do GvR
Oficina de Lógica de Programação - Uso do Scratch e do GvR
 
Paradigmas de Linguagens de Programação - Estruturas de Controle
Paradigmas de Linguagens de Programação - Estruturas de ControleParadigmas de Linguagens de Programação - Estruturas de Controle
Paradigmas de Linguagens de Programação - Estruturas de Controle
 

Destaque

Aula 02-processos-e-threads-tanenbaum-parte-1
Aula 02-processos-e-threads-tanenbaum-parte-1Aula 02-processos-e-threads-tanenbaum-parte-1
Aula 02-processos-e-threads-tanenbaum-parte-1Cristiano Pires Martins
 
Facilitando a Programação concorrente com o Fork/Join
Facilitando a Programação concorrente com o Fork/JoinFacilitando a Programação concorrente com o Fork/Join
Facilitando a Programação concorrente com o Fork/JoinMario Amaral
 
Funcamentos de Programação Concorrente
Funcamentos de Programação ConcorrenteFuncamentos de Programação Concorrente
Funcamentos de Programação ConcorrenteDenis L Presciliano
 
Programação Concorrente - LAB 01
Programação Concorrente - LAB 01Programação Concorrente - LAB 01
Programação Concorrente - LAB 01thomasdacosta
 
Programação Concorrente - Aula 06
Programação Concorrente - Aula 06Programação Concorrente - Aula 06
Programação Concorrente - Aula 06thomasdacosta
 
Programação Concorrente - Aula 07
Programação Concorrente - Aula 07Programação Concorrente - Aula 07
Programação Concorrente - Aula 07thomasdacosta
 
Programação Concorrente - Introdução
Programação Concorrente - IntroduçãoProgramação Concorrente - Introdução
Programação Concorrente - IntroduçãoFabio Moura Pereira
 
Programação de Sistemas Distribuídos - Aula 02
Programação de Sistemas Distribuídos - Aula 02Programação de Sistemas Distribuídos - Aula 02
Programação de Sistemas Distribuídos - Aula 02thomasdacosta
 
Processos e threads
Processos e threadsProcessos e threads
Processos e threadsSilvino Neto
 
Programação de Sistemas Distribuídos - Aula 03
Programação de Sistemas Distribuídos - Aula 03Programação de Sistemas Distribuídos - Aula 03
Programação de Sistemas Distribuídos - Aula 03thomasdacosta
 
Capítulo 5 Sistemas Operacionais Modernos
Capítulo 5 Sistemas Operacionais ModernosCapítulo 5 Sistemas Operacionais Modernos
Capítulo 5 Sistemas Operacionais ModernosWellington Oliveira
 
Resumo de S.O.
Resumo de S.O.Resumo de S.O.
Resumo de S.O.dannas_06
 
Aula 02-processos-e-threads-tanenbaum-parte-2
Aula 02-processos-e-threads-tanenbaum-parte-2Aula 02-processos-e-threads-tanenbaum-parte-2
Aula 02-processos-e-threads-tanenbaum-parte-2Cristiano Pires Martins
 
Sistemas Operacionais Modernos Capítulo 3 Deadlock
Sistemas Operacionais Modernos Capítulo 3 DeadlockSistemas Operacionais Modernos Capítulo 3 Deadlock
Sistemas Operacionais Modernos Capítulo 3 DeadlockWellington Oliveira
 
Capítulo 10 Sistemas Operacionais Modernos
Capítulo 10 Sistemas Operacionais ModernosCapítulo 10 Sistemas Operacionais Modernos
Capítulo 10 Sistemas Operacionais ModernosWellington Oliveira
 
Tanenbaum Sistemas Operacionais Cap 01
Tanenbaum Sistemas Operacionais Cap 01Tanenbaum Sistemas Operacionais Cap 01
Tanenbaum Sistemas Operacionais Cap 01Wellington Oliveira
 

Destaque (16)

Aula 02-processos-e-threads-tanenbaum-parte-1
Aula 02-processos-e-threads-tanenbaum-parte-1Aula 02-processos-e-threads-tanenbaum-parte-1
Aula 02-processos-e-threads-tanenbaum-parte-1
 
Facilitando a Programação concorrente com o Fork/Join
Facilitando a Programação concorrente com o Fork/JoinFacilitando a Programação concorrente com o Fork/Join
Facilitando a Programação concorrente com o Fork/Join
 
Funcamentos de Programação Concorrente
Funcamentos de Programação ConcorrenteFuncamentos de Programação Concorrente
Funcamentos de Programação Concorrente
 
Programação Concorrente - LAB 01
Programação Concorrente - LAB 01Programação Concorrente - LAB 01
Programação Concorrente - LAB 01
 
Programação Concorrente - Aula 06
Programação Concorrente - Aula 06Programação Concorrente - Aula 06
Programação Concorrente - Aula 06
 
Programação Concorrente - Aula 07
Programação Concorrente - Aula 07Programação Concorrente - Aula 07
Programação Concorrente - Aula 07
 
Programação Concorrente - Introdução
Programação Concorrente - IntroduçãoProgramação Concorrente - Introdução
Programação Concorrente - Introdução
 
Programação de Sistemas Distribuídos - Aula 02
Programação de Sistemas Distribuídos - Aula 02Programação de Sistemas Distribuídos - Aula 02
Programação de Sistemas Distribuídos - Aula 02
 
Processos e threads
Processos e threadsProcessos e threads
Processos e threads
 
Programação de Sistemas Distribuídos - Aula 03
Programação de Sistemas Distribuídos - Aula 03Programação de Sistemas Distribuídos - Aula 03
Programação de Sistemas Distribuídos - Aula 03
 
Capítulo 5 Sistemas Operacionais Modernos
Capítulo 5 Sistemas Operacionais ModernosCapítulo 5 Sistemas Operacionais Modernos
Capítulo 5 Sistemas Operacionais Modernos
 
Resumo de S.O.
Resumo de S.O.Resumo de S.O.
Resumo de S.O.
 
Aula 02-processos-e-threads-tanenbaum-parte-2
Aula 02-processos-e-threads-tanenbaum-parte-2Aula 02-processos-e-threads-tanenbaum-parte-2
Aula 02-processos-e-threads-tanenbaum-parte-2
 
Sistemas Operacionais Modernos Capítulo 3 Deadlock
Sistemas Operacionais Modernos Capítulo 3 DeadlockSistemas Operacionais Modernos Capítulo 3 Deadlock
Sistemas Operacionais Modernos Capítulo 3 Deadlock
 
Capítulo 10 Sistemas Operacionais Modernos
Capítulo 10 Sistemas Operacionais ModernosCapítulo 10 Sistemas Operacionais Modernos
Capítulo 10 Sistemas Operacionais Modernos
 
Tanenbaum Sistemas Operacionais Cap 01
Tanenbaum Sistemas Operacionais Cap 01Tanenbaum Sistemas Operacionais Cap 01
Tanenbaum Sistemas Operacionais Cap 01
 

Semelhante a Anhanguera Threads Aula 03

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
 
Paralelismo na prática: Threads de uma vez por todas e sem medo!
Paralelismo na prática: Threads de uma vez por todas e sem medo!Paralelismo na prática: Threads de uma vez por todas e sem medo!
Paralelismo na prática: Threads de uma vez por todas e sem medo!Mario Guedes
 
Java recursos avançados - multithreading
Java   recursos avançados - multithreadingJava   recursos avançados - multithreading
Java recursos avançados - multithreadingArmando Daniel
 
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
 
Threads - .Net Framework 4.0
Threads - .Net Framework 4.0Threads - .Net Framework 4.0
Threads - .Net Framework 4.0Charles Fortes
 
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
 
Threads 08: Executores e Futures
Threads 08: Executores e FuturesThreads 08: Executores e Futures
Threads 08: Executores e FuturesHelder da Rocha
 
Laboratório de Programação II: Threads
Laboratório de Programação II: ThreadsLaboratório de Programação II: Threads
Laboratório de Programação II: ThreadsAlex Camargo
 
Aula sobre multithreading
Aula sobre multithreadingAula sobre multithreading
Aula sobre multithreadingBianca Dantas
 
Delphi Parallel Programming Library
Delphi Parallel Programming LibraryDelphi Parallel Programming Library
Delphi Parallel Programming LibraryMario Guedes
 
Java introdução ao java
Java   introdução ao javaJava   introdução ao java
Java introdução ao javaArmando Daniel
 
Programação Concorrente - Gerenciamento de Threads - Parte I
Programação Concorrente - Gerenciamento de Threads - Parte IProgramação Concorrente - Gerenciamento de Threads - Parte I
Programação Concorrente - Gerenciamento de Threads - Parte IFabio Moura Pereira
 

Semelhante a Anhanguera Threads Aula 03 (20)

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
 
Thread Java
Thread JavaThread Java
Thread Java
 
Curso de Java: Threads
Curso de Java: ThreadsCurso de Java: Threads
Curso de Java: Threads
 
Paralelismo na prática: Threads de uma vez por todas e sem medo!
Paralelismo na prática: Threads de uma vez por todas e sem medo!Paralelismo na prática: Threads de uma vez por todas e sem medo!
Paralelismo na prática: Threads de uma vez por todas e sem medo!
 
Threads
ThreadsThreads
Threads
 
Java recursos avançados - multithreading
Java   recursos avançados - multithreadingJava   recursos avançados - multithreading
Java recursos avançados - multithreading
 
threads e-sockets-em-java
 threads e-sockets-em-java threads e-sockets-em-java
threads e-sockets-em-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
 
Threads - .Net Framework 4.0
Threads - .Net Framework 4.0Threads - .Net Framework 4.0
Threads - .Net Framework 4.0
 
Threads e sockets java
Threads e sockets javaThreads e sockets java
Threads e sockets java
 
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
 
Threads 08: Executores e Futures
Threads 08: Executores e FuturesThreads 08: Executores e Futures
Threads 08: Executores e Futures
 
Laboratório de Programação II: Threads
Laboratório de Programação II: ThreadsLaboratório de Programação II: Threads
Laboratório de Programação II: Threads
 
Aula sobre multithreading
Aula sobre multithreadingAula sobre multithreading
Aula sobre multithreading
 
Delphi Parallel Programming Library
Delphi Parallel Programming LibraryDelphi Parallel Programming Library
Delphi Parallel Programming Library
 
Java introdução ao java
Java   introdução ao javaJava   introdução ao java
Java introdução ao java
 
Programação Concorrente - Gerenciamento de Threads - Parte I
Programação Concorrente - Gerenciamento de Threads - Parte IProgramação Concorrente - Gerenciamento de Threads - Parte I
Programação Concorrente - Gerenciamento de Threads - Parte I
 
THREADS JAVA
THREADS JAVATHREADS JAVA
THREADS JAVA
 
Java 13
Java 13Java 13
Java 13
 

Mais de thomasdacosta

Azure Functions e Java: Do Desenvolvimento a Produção
Azure Functions e Java: Do Desenvolvimento a ProduçãoAzure Functions e Java: Do Desenvolvimento a Produção
Azure Functions e Java: Do Desenvolvimento a Produçãothomasdacosta
 
Organização de Computadores - Aula 02
Organização de Computadores - Aula 02Organização de Computadores - Aula 02
Organização de Computadores - Aula 02thomasdacosta
 
Organização de Computadores - Aula 03
Organização de Computadores - Aula 03Organização de Computadores - Aula 03
Organização de Computadores - Aula 03thomasdacosta
 
Organização de Computadores - Aula 01
Organização de Computadores - Aula 01Organização de Computadores - Aula 01
Organização de Computadores - Aula 01thomasdacosta
 
Redes de Computadores - Exercícios 06
Redes de Computadores - Exercícios 06Redes de Computadores - Exercícios 06
Redes de Computadores - Exercícios 06thomasdacosta
 
Redes de Computadores - Exercícios 05
Redes de Computadores - Exercícios 05Redes de Computadores - Exercícios 05
Redes de Computadores - Exercícios 05thomasdacosta
 
Redes de Computadores - Exercícios 04
Redes de Computadores - Exercícios 04Redes de Computadores - Exercícios 04
Redes de Computadores - Exercícios 04thomasdacosta
 
Redes de Computadores - Aula 05
Redes de Computadores - Aula 05Redes de Computadores - Aula 05
Redes de Computadores - Aula 05thomasdacosta
 
Redes de Computadores - Exercícios 03
Redes de Computadores - Exercícios 03Redes de Computadores - Exercícios 03
Redes de Computadores - Exercícios 03thomasdacosta
 
Redes de Computadores - Aula 04
Redes de Computadores - Aula 04Redes de Computadores - Aula 04
Redes de Computadores - Aula 04thomasdacosta
 
Algoritmos e Estrutura de Dados - Aula 05
Algoritmos e Estrutura de Dados - Aula 05Algoritmos e Estrutura de Dados - Aula 05
Algoritmos e Estrutura de Dados - Aula 05thomasdacosta
 
Algoritmos e Estrutura de Dados - Aula 04
Algoritmos e Estrutura de Dados - Aula 04Algoritmos e Estrutura de Dados - Aula 04
Algoritmos e Estrutura de Dados - Aula 04thomasdacosta
 
Algoritmos e Estrutura de Dados - Aula 03
Algoritmos e Estrutura de Dados - Aula 03Algoritmos e Estrutura de Dados - Aula 03
Algoritmos e Estrutura de Dados - Aula 03thomasdacosta
 
Redes de Computadores - Aula 03
Redes de Computadores - Aula 03Redes de Computadores - Aula 03
Redes de Computadores - Aula 03thomasdacosta
 
Redes de Computadores - Aula 02
Redes de Computadores - Aula 02Redes de Computadores - Aula 02
Redes de Computadores - Aula 02thomasdacosta
 
Redes de Computadores - Aula 01
Redes de Computadores - Aula 01Redes de Computadores - Aula 01
Redes de Computadores - Aula 01thomasdacosta
 

Mais de thomasdacosta (16)

Azure Functions e Java: Do Desenvolvimento a Produção
Azure Functions e Java: Do Desenvolvimento a ProduçãoAzure Functions e Java: Do Desenvolvimento a Produção
Azure Functions e Java: Do Desenvolvimento a Produção
 
Organização de Computadores - Aula 02
Organização de Computadores - Aula 02Organização de Computadores - Aula 02
Organização de Computadores - Aula 02
 
Organização de Computadores - Aula 03
Organização de Computadores - Aula 03Organização de Computadores - Aula 03
Organização de Computadores - Aula 03
 
Organização de Computadores - Aula 01
Organização de Computadores - Aula 01Organização de Computadores - Aula 01
Organização de Computadores - Aula 01
 
Redes de Computadores - Exercícios 06
Redes de Computadores - Exercícios 06Redes de Computadores - Exercícios 06
Redes de Computadores - Exercícios 06
 
Redes de Computadores - Exercícios 05
Redes de Computadores - Exercícios 05Redes de Computadores - Exercícios 05
Redes de Computadores - Exercícios 05
 
Redes de Computadores - Exercícios 04
Redes de Computadores - Exercícios 04Redes de Computadores - Exercícios 04
Redes de Computadores - Exercícios 04
 
Redes de Computadores - Aula 05
Redes de Computadores - Aula 05Redes de Computadores - Aula 05
Redes de Computadores - Aula 05
 
Redes de Computadores - Exercícios 03
Redes de Computadores - Exercícios 03Redes de Computadores - Exercícios 03
Redes de Computadores - Exercícios 03
 
Redes de Computadores - Aula 04
Redes de Computadores - Aula 04Redes de Computadores - Aula 04
Redes de Computadores - Aula 04
 
Algoritmos e Estrutura de Dados - Aula 05
Algoritmos e Estrutura de Dados - Aula 05Algoritmos e Estrutura de Dados - Aula 05
Algoritmos e Estrutura de Dados - Aula 05
 
Algoritmos e Estrutura de Dados - Aula 04
Algoritmos e Estrutura de Dados - Aula 04Algoritmos e Estrutura de Dados - Aula 04
Algoritmos e Estrutura de Dados - Aula 04
 
Algoritmos e Estrutura de Dados - Aula 03
Algoritmos e Estrutura de Dados - Aula 03Algoritmos e Estrutura de Dados - Aula 03
Algoritmos e Estrutura de Dados - Aula 03
 
Redes de Computadores - Aula 03
Redes de Computadores - Aula 03Redes de Computadores - Aula 03
Redes de Computadores - Aula 03
 
Redes de Computadores - Aula 02
Redes de Computadores - Aula 02Redes de Computadores - Aula 02
Redes de Computadores - Aula 02
 
Redes de Computadores - Aula 01
Redes de Computadores - Aula 01Redes de Computadores - Aula 01
Redes de Computadores - Aula 01
 

Anhanguera Threads Aula 03

  • 1. ANHANGUERA – 2016.1 PROGRAMAÇÃO CONCORRENTE AULA 03 – THREADS Prof. Thomás da Costa thomascosta@aedu.com
  • 2. PROGRAMAÇÃO CONCORRENTE – Prof. Thomás da Costa THREADS THREADS
  • 3. PROGRAMAÇÃO CONCORRENTE – Prof. Thomás da Costa THREADS Threads Detalhes: • No desenvolvimento de software, precisamos muitas vezes efetuar operações paralelas. • Executando operações paralelas, nosso programa continua seu processamento natural enquanto espera a conclusão de outras atividades. • Os processos paralelos podem ser definidos como um fluxo de controle ativo dentro do nosso programa.
  • 4. PROGRAMAÇÃO CONCORRENTE – Prof. Thomás da Costa THREADS Threads Processo 1 Processo 2 Processo 3 Sem Threads Processo 1 Processo 2 Processo 3 Programa Principal Com Threads
  • 5. PROGRAMAÇÃO CONCORRENTE – Prof. Thomás da Costa Threads O que é?: THREADS É fluxo alternativo e ativo dentro do nosso programa que executa paralelamente com o software principal e outros fluxos. Possui um bloco de instruções ou comandos que serão executados.
  • 6. PROGRAMAÇÃO CONCORRENTE – Prof. Thomás da Costa Threads Detalhes: • Isso é a base de Programação Concorrente. • Conhecido como multiprogramação. • Boa parte das aplicações desenvolvidas nos dias atuais, utiliza de threads para processamento de informações e melhoria de performance. • Tarefas podem ser paralelizadas em vários fluxos. • Tarefas podem ser distribuídas quando utilizamos threads. • Hoje grandes aplicações trabalham com threads, muitas delas distribuídas em computadores diferentes. • São compostas por instruções de comandos de uma linguagem. No nosso caso o Java. • Aproveitamos melhor os recursos de um sistema operacional. THREADS
  • 7. PROGRAMAÇÃO CONCORRENTE – Prof. Thomás da Costa Threads Detalhes: THREADS • São conhecidas como processos leves. • Como foi dito, fazem parte do programa principal ou processo tradicional. • Possuem prioridades. • Podem possuir um identificador. • Podemos iniciar, parar ou colocar uma thread em espera. • São gerenciadas pelo sistema operacional.
  • 8. PROGRAMAÇÃO CONCORRENTE – Prof. Thomás da Costa Threads Ciclo de Vida: THREADS Fonte: http://www3.ntu.edu.sg/home/ehchua/programming/java/j5e_multithreading.html
  • 9. PROGRAMAÇÃO CONCORRENTE – Prof. Thomás da Costa Threads Criando uma Thread: THREADS public class ExemploThread extends Thread { @Override public void run() { } } • Para criar uma Thread utilizamos a classe Thread. • As instruções de execução de uma Thread são desenvolvidas dentro do método run(). Método que será executado pela Thread Classe Thread
  • 10. PROGRAMAÇÃO CONCORRENTE – Prof. Thomás da Costa Exemplo 01 package edu.anhanguera.prc.aula03; public class ExemploThread extends Thread { @Override public void run() { System.out.println("Executando ExemploThread"); } public static void main(String[] args) { ExemploThread exemploThread = new ExemploThread(); exemploThread.start(); } }
  • 11. PROGRAMAÇÃO CONCORRENTE – Prof. Thomás da Costa Threads Detalhes: • Neste modelo, utilizamos uma classe como herança. • Caso seja necessário utilizar outra classe como herança, podemos ter problemas, pois o Java não possui herança múltipla. • Para iniciar uma Thread utilizamos o método start(). THREADS
  • 12. PROGRAMAÇÃO CONCORRENTE – Prof. Thomás da Costa Threads Criando uma Thread: THREADS • Podemos utilizar uma outra forma de criar uma Thread: utilizando a interface Runnable. public class ExemploRunnable implements Runnable { public void run() { } } Método que será executado pela Thread Interface Runnable
  • 13. PROGRAMAÇÃO CONCORRENTE – Prof. Thomás da Costa Exemplo 02 package edu.anhanguera.prc.aula03; public class ExemploRunnable implements Runnable { public void run() { System.out.println("Executando ExemploRunnable"); } public static void main(String[] args) { ExemploRunnable exemploRunnable = new ExemploRunnable(); Thread thread = new Thread(exemploRunnable); thread.start(); } }
  • 14. PROGRAMAÇÃO CONCORRENTE – Prof. Thomás da Costa Threads Detalhes: • Neste modelo utilizamos uma interface. • Caso seja necessário utilizar outra classe como herança ou até mesmo uma interface não teremos problemas. • Esta é a melhor forma de criar e utilizar Threads. • Precisamos instanciar a classe Thread e passar como argumento a classe com a interface Runnable implementada. • Para iniciar uma Thread utilizamos o método start() da classe Thread. THREADS
  • 15. PROGRAMAÇÃO CONCORRENTE – Prof. Thomás da Costa Exemplo 03 package edu.anhanguera.prc.aula03; import java.util.concurrent.ThreadLocalRandom; public class ExemploNumIntRandomico implements Runnable { public static int parar = 0; public void run() { while (parar == 0) { int num = ThreadLocalRandom.current().nextInt(0, 9); System.out.println("Numero: " + num); try { Thread.sleep(500); } catch (InterruptedException e) {} } } public static void main(String[] args) { ExemploNumIntRandomico numIntRandomico = new ExemploNumIntRandomico(); Thread thread = new Thread(numIntRandomico); thread.start(); } }
  • 16. PROGRAMAÇÃO CONCORRENTE – Prof. Thomás da Costa Threads • O comando Thread.sleep é estático. • Sua principal função é deixar a Thread pausada ou adormecida durante um período de tempo. • O parâmetro do método é a quantidade de milissegundos que a Thread deve ficar adormecida. THREADS Detalhes:
  • 17. PROGRAMAÇÃO CONCORRENTE – Prof. Thomás da Costa Exemplo 04 package edu.anhanguera.prc.aula03; import java.util.concurrent.ThreadLocalRandom; public class ExemploNumDoubleRandomico implements Runnable { public static int parar = 0; public void run() { while (parar == 0) { double num = ThreadLocalRandom.current().nextDouble(0, 9); System.out.println("Numero: " + num); try { Thread.sleep(2000); } catch (InterruptedException e) {} } } public static void main(String[] args) { ExemploNumDoubleRandomico randomico = new ExemploNumDoubleRandomico(); Thread thread = new Thread(randomico); thread.start(); } }
  • 18. PROGRAMAÇÃO CONCORRENTE – Prof. Thomás da Costa package edu.anhanguera.prc.aula03; public class ExemploNumerosRandomicos { public static void main(String[] args) { ExemploNumDoubleRandomico doubleRandomico = new ExemploNumDoubleRandomico(); ExemploNumIntRandomico intRandomico = new ExemploNumIntRandomico(); Thread threadDouble = new Thread(doubleRandomico); threadDouble.start(); Thread threadInt = new Thread(intRandomico); threadInt.start(); try { Thread.sleep(10000); ExemploNumDoubleRandomico.parar = 1; System.out.println("ExemploNumDoubleRandomico finalizado"); Thread.sleep(10000); ExemploNumIntRandomico.parar = 1; System.out.println("ExemploNumIntRandomico finalizado"); } catch (InterruptedException e) {} } }
  • 19. PROGRAMAÇÃO CONCORRENTE – Prof. Thomás da Costa Resumo • Threads são blocos de instruções que executam em paralelo ao programa principal. • Ajudam na performance de um aplicação. • As Threads possuem um ciclo de vida. • Podemos utilizar a classe Thread ou a interface Runnable para implementar uma Thread. THREADS