SlideShare una empresa de Scribd logo
1 de 19
PCII
ETEC MONSENHOR ANTONIO MAGLIANO
Realizando atividades
em paralelo
Programação Concorrente
“Em várias situações, precisamos "rodar duas coisas ao mesmo
tempo". Imagine um programa que gera um relatório muito
grande em PDF. É um processo demorado e, para dar alguma
satisfação para o usuário, queremos mostrar uma barra de
progresso. Queremos então gerar o PDF e ao mesmo
tempo atualizar a barrinha.” [Caelum].
Assoviar e
Chupar Cana...
Conceito de Thread
“É uma forma de um processo dividir a si mesmo em duas ou mais
tarefas que podem ser executadas concorrentemente”...“permite,
por exemplo, que o usuário de um programa utilize uma
funcionalidade do ambiente enquanto outras linhas de execução
realizam outros cálculos e operações.” [Wikipedia].
THREADS EM JAVA...
É possível executar atividades concorrentes de 2
maneiras em java:
1. Estendendo a Classe Thread
2. Criando uma classe que implemente a interface
Runnable.
THREADS EM JAVA...
A classe Thread do pacote java.lang é utilizada para
programar linhas de execução paralelas. Ela recebe como
argumento um objeto com o código que desejamos rodar.
Exemplo: Estender Thread
Método onde será
executada as atividades
da Thread
Thread:
Testando:
THREADS EM JAVA...
Executa enquanto
condição for verdadeira
Quando não for mais a
Thread será finalizada
Rodando a Thread
Runnable:
Testando:
Usando Runnable...
Runnable:
Testando:
Rodando 2 Threads
CRIAR UM
IDENTIFICADOR
2 Threads
ao mesmo
tempo
Para que uma thread durma podemos utilizar o método sleep:
Sintaxe: Thread.sleep ( long tempoEmMilessegundos ) ;
Pausando uma Thread
Vamos adicionar à
classe Runnable um
campo de tempo de
pausa para a Thread
a cada execução.
Pausando uma Thread (Testando)
Criando um Relógio...
Crie uma classe chamada Relógio
Criando um Relógio...
Crie um formulário (JFrame) chamado RelogioUI
txtHora (JTextField) btnRelogio (JButton)
Criando um Relógio...
Codifique o clique do Botão:
Rodando !!!
Formatando Data / Hora
• Date
A data representa o tempo, um tempo é composto por ano, mês, dia
atual, minuto atual, entre outras propriedades que essa classe possui.
• Calendar
Essa classe pode produzir os valores de todos os campos de calendário
necessários para implementar a formatação de data e hora. para obter um
calendário é necessário usar o método estático getInstance().
• SimpleDateFormat
Às vezes é preciso transformar um texto em uma data ou vice versa.
Geralmente a classe SimpleDateFormat é mais usada quando trata-se de
formatação de datas, pois já no seu construtor, quando instanciada,
permite passar como argumento o formato da data desejada.
Formatando Data / Hora
Estender uma Thread é mais simples, mas você está
usando herança apenas por "preguiça“.
Herdamos um monte de métodos mas usamos
apenas o método run, e não por polimorfismo, que
seria a grande vantagem.
Prefira implementar Runnable a herdar de Thread,
pois você terá liberdade para ter objetos “rodáveis”
de qualquer tipo e não só objetos que estendam da
classe Thread.
Runnable x Thread
• [CAELUM]
http://www.caelum.com.br/apostila-java-orientacao-objetos/programacao-
concorrente-e-threads/
• [WIKIPEDIA]
http://pt.wikipedia.org/wiki/Thread_(ci%C3%AAncia_da_computa%C3%A7%C3%A3o)
• [ORACLE JAVA THREAD]
http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html
• [ORACLE JAVA RUNNABLE]
http://docs.oracle.com/javase/7/docs/api/java/lang/Runnable.html
• [GUJ]
http://www.guj.com.br/articles/8
• [DEVMEDIA]
http://www.devmedia.com.br/trabalhando-com-as-classes-date-calendar-e-
simpledateformat-em-java/27401

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

.Net Core 1.0 vs .NET Framework
.Net Core 1.0 vs .NET Framework.Net Core 1.0 vs .NET Framework
.Net Core 1.0 vs .NET Framework
 
.Net Core
.Net Core.Net Core
.Net Core
 
Aula sobre multithreading
Aula sobre multithreadingAula sobre multithreading
Aula sobre multithreading
 
Kubernetes
KubernetesKubernetes
Kubernetes
 
Introduction to Docker
Introduction to DockerIntroduction to Docker
Introduction to Docker
 
Introduction to docker
Introduction to dockerIntroduction to docker
Introduction to docker
 
Apresentação Docker
Apresentação DockerApresentação Docker
Apresentação Docker
 
C# web api
C# web apiC# web api
C# web api
 
java 8 new features
java 8 new features java 8 new features
java 8 new features
 
Jenkins tutorial
Jenkins tutorialJenkins tutorial
Jenkins tutorial
 
Multi Stage Docker Build
Multi Stage Docker Build Multi Stage Docker Build
Multi Stage Docker Build
 
.Net Core
.Net Core.Net Core
.Net Core
 
Curso de Java: Introdução a lambda e Streams
Curso de Java: Introdução a lambda e StreamsCurso de Java: Introdução a lambda e Streams
Curso de Java: Introdução a lambda e Streams
 
Java basics
Java basicsJava basics
Java basics
 
Introdução ao SQL
Introdução ao SQLIntrodução ao SQL
Introdução ao SQL
 
Docker Basics
Docker BasicsDocker Basics
Docker Basics
 
Java Concurrency by Example
Java Concurrency by ExampleJava Concurrency by Example
Java Concurrency by Example
 
Algo poo ts
Algo poo tsAlgo poo ts
Algo poo ts
 
Angular - Chapter 4 - Data and Event Handling
 Angular - Chapter 4 - Data and Event Handling Angular - Chapter 4 - Data and Event Handling
Angular - Chapter 4 - Data and Event Handling
 
Containerd internals: building a core container runtime
Containerd internals: building a core container runtimeContainerd internals: building a core container runtime
Containerd internals: building a core container runtime
 

Destacado (9)

Apostila 5 processos e threads
Apostila 5   processos e threadsApostila 5   processos e threads
Apostila 5 processos e threads
 
Aula java[1]
Aula java[1]Aula java[1]
Aula java[1]
 
Threads em java
Threads em javaThreads em java
Threads em java
 
Introdução ao java
Introdução ao javaIntrodução ao java
Introdução ao java
 
Java recursos avançados - multithreading
Java   recursos avançados - multithreadingJava   recursos avançados - multithreading
Java recursos avançados - multithreading
 
Java Swing
Java SwingJava Swing
Java Swing
 
Java Course 10: Threads and Concurrency
Java Course 10: Threads and ConcurrencyJava Course 10: Threads and Concurrency
Java Course 10: Threads and Concurrency
 
Threads in JAVA
Threads in JAVAThreads in JAVA
Threads in JAVA
 
Multithreading In Java
Multithreading In JavaMultithreading In Java
Multithreading In Java
 

Similar a Programação concorrente em 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 IFabio Moura Pereira
 
Java memory model primary ref. - faq
Java memory model   primary ref. - faqJava memory model   primary ref. - faq
Java memory model primary ref. - faqPedro De Almeida
 
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
 
Spring & Struts
Spring & StrutsSpring & Struts
Spring & Strutseduan
 
Utilitários para Programação Concorrente em Java (2005)
Utilitários para Programação Concorrente em Java (2005)Utilitários para Programação Concorrente em Java (2005)
Utilitários para Programação Concorrente em Java (2005)Helder da Rocha
 
Threads - .Net Framework 4.0
Threads - .Net Framework 4.0Threads - .Net Framework 4.0
Threads - .Net Framework 4.0Charles Fortes
 
Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007Rafael Benevides
 
Entendendo Frameworks web com Python
Entendendo Frameworks web com PythonEntendendo Frameworks web com Python
Entendendo Frameworks web com PythonLuiz Aldabalde
 
Entendendo Framework Web com Python
Entendendo Framework Web com PythonEntendendo Framework Web com Python
Entendendo Framework Web com PythonPythOnRio
 
Computação Móvel 2012.2 - Android
Computação Móvel 2012.2 - AndroidComputação Móvel 2012.2 - Android
Computação Móvel 2012.2 - AndroidTiago Bencardino
 
PDC - Engenharia - Plataforma Microsoft .NET
PDC - Engenharia - Plataforma Microsoft .NETPDC - Engenharia - Plataforma Microsoft .NET
PDC - Engenharia - Plataforma Microsoft .NETslides_teltools
 
Paradigmas de Linguagens de Programação - Modularização, componentização e re...
Paradigmas de Linguagens de Programação - Modularização, componentização e re...Paradigmas de Linguagens de Programação - Modularização, componentização e re...
Paradigmas de Linguagens de Programação - Modularização, componentização e re...Adriano Teixeira de Souza
 

Similar a Programação concorrente em Java (20)

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
 
Java memory model primary ref. - faq
Java memory model   primary ref. - faqJava memory model   primary ref. - faq
Java memory model primary ref. - faq
 
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
 
Spring & Struts
Spring & StrutsSpring & Struts
Spring & Struts
 
Utilitários para Programação Concorrente em Java (2005)
Utilitários para Programação Concorrente em Java (2005)Utilitários para Programação Concorrente em Java (2005)
Utilitários para Programação Concorrente em Java (2005)
 
Java Seminar
Java SeminarJava Seminar
Java Seminar
 
Threads - .Net Framework 4.0
Threads - .Net Framework 4.0Threads - .Net Framework 4.0
Threads - .Net Framework 4.0
 
Minicurso Java
Minicurso JavaMinicurso Java
Minicurso Java
 
Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007
 
Entendendo Frameworks web com Python
Entendendo Frameworks web com PythonEntendendo Frameworks web com Python
Entendendo Frameworks web com Python
 
Entendendo Framework Web com Python
Entendendo Framework Web com PythonEntendendo Framework Web com Python
Entendendo Framework Web com Python
 
Aula1 c++ builder
Aula1   c++ builderAula1   c++ builder
Aula1 c++ builder
 
Computação Móvel 2012.2 - Android
Computação Móvel 2012.2 - AndroidComputação Móvel 2012.2 - Android
Computação Móvel 2012.2 - Android
 
Curso de ReactJS
Curso de ReactJSCurso de ReactJS
Curso de ReactJS
 
PDC - Engenharia - Plataforma Microsoft .NET
PDC - Engenharia - Plataforma Microsoft .NETPDC - Engenharia - Plataforma Microsoft .NET
PDC - Engenharia - Plataforma Microsoft .NET
 
Python Interface Gráfica Tkinter
Python Interface Gráfica TkinterPython Interface Gráfica Tkinter
Python Interface Gráfica Tkinter
 
Threads
ThreadsThreads
Threads
 
Aula1
Aula1Aula1
Aula1
 
Paradigmas de Linguagens de Programação - Modularização, componentização e re...
Paradigmas de Linguagens de Programação - Modularização, componentização e re...Paradigmas de Linguagens de Programação - Modularização, componentização e re...
Paradigmas de Linguagens de Programação - Modularização, componentização e re...
 

Más de ETEC Monsenhor Antonio Magliano

Android - Criando um Adapter personalizado para uma Agenda de Contatos
Android - Criando um Adapter personalizado para uma Agenda de ContatosAndroid - Criando um Adapter personalizado para uma Agenda de Contatos
Android - Criando um Adapter personalizado para uma Agenda de ContatosETEC Monsenhor Antonio Magliano
 
APLICAÇÃO JAVA DE CADASTRO DE NOTA FISCAL USANDO BANCO MYSQL
APLICAÇÃO JAVA DE CADASTRO DE NOTA FISCAL USANDO BANCO MYSQLAPLICAÇÃO JAVA DE CADASTRO DE NOTA FISCAL USANDO BANCO MYSQL
APLICAÇÃO JAVA DE CADASTRO DE NOTA FISCAL USANDO BANCO MYSQLETEC Monsenhor Antonio Magliano
 
Visual Basic 2010 - Uma Aplicação com Banco de Dados (Controle de Despesas)
Visual Basic 2010 - Uma Aplicação com Banco de Dados (Controle de Despesas)Visual Basic 2010 - Uma Aplicação com Banco de Dados (Controle de Despesas)
Visual Basic 2010 - Uma Aplicação com Banco de Dados (Controle de Despesas)ETEC Monsenhor Antonio Magliano
 
Visual Basic 2010 - Gerando um Projeto de Instalação (Visual Studio Installer)
Visual Basic 2010 - Gerando um Projeto de Instalação (Visual Studio Installer)Visual Basic 2010 - Gerando um Projeto de Instalação (Visual Studio Installer)
Visual Basic 2010 - Gerando um Projeto de Instalação (Visual Studio Installer)ETEC Monsenhor Antonio Magliano
 
Visual Basic 2010 - Criando uma aplicação de Controle de Notas
Visual Basic 2010 - Criando uma aplicação de Controle de NotasVisual Basic 2010 - Criando uma aplicação de Controle de Notas
Visual Basic 2010 - Criando uma aplicação de Controle de NotasETEC Monsenhor Antonio Magliano
 

Más de ETEC Monsenhor Antonio Magliano (20)

Cadastro Desktop (Swing) com JPA MySQL
Cadastro Desktop (Swing) com JPA MySQLCadastro Desktop (Swing) com JPA MySQL
Cadastro Desktop (Swing) com JPA MySQL
 
JPA INTRODUÇÃO
JPA INTRODUÇÃOJPA INTRODUÇÃO
JPA INTRODUÇÃO
 
Android - Criando um Adapter personalizado para uma Agenda de Contatos
Android - Criando um Adapter personalizado para uma Agenda de ContatosAndroid - Criando um Adapter personalizado para uma Agenda de Contatos
Android - Criando um Adapter personalizado para uma Agenda de Contatos
 
Android - Intents implícitas e explícitas
Android - Intents implícitas e explícitasAndroid - Intents implícitas e explícitas
Android - Intents implícitas e explícitas
 
Android - Criando uma ListView
Android - Criando  uma ListViewAndroid - Criando  uma ListView
Android - Criando uma ListView
 
APLICAÇÃO JAVA DE CADASTRO DE NOTA FISCAL USANDO BANCO MYSQL
APLICAÇÃO JAVA DE CADASTRO DE NOTA FISCAL USANDO BANCO MYSQLAPLICAÇÃO JAVA DE CADASTRO DE NOTA FISCAL USANDO BANCO MYSQL
APLICAÇÃO JAVA DE CADASTRO DE NOTA FISCAL USANDO BANCO MYSQL
 
CONEXÃO BANCO DE DADOS MYSQL COM JAVA
CONEXÃO BANCO DE DADOS MYSQL  COM JAVACONEXÃO BANCO DE DADOS MYSQL  COM JAVA
CONEXÃO BANCO DE DADOS MYSQL COM JAVA
 
Sockets : Introdução
Sockets : IntroduçãoSockets : Introdução
Sockets : Introdução
 
PCII: SERIALIZAÇÃO: EXEMPLOS
PCII: SERIALIZAÇÃO: EXEMPLOSPCII: SERIALIZAÇÃO: EXEMPLOS
PCII: SERIALIZAÇÃO: EXEMPLOS
 
PCII: SERIALIZAÇÃO EM JAVA: INTRODUÇÃO
PCII: SERIALIZAÇÃO EM JAVA: INTRODUÇÃOPCII: SERIALIZAÇÃO EM JAVA: INTRODUÇÃO
PCII: SERIALIZAÇÃO EM JAVA: INTRODUÇÃO
 
PCII - INTERFACES EM JAVA: EXEMPLOS
PCII - INTERFACES EM JAVA: EXEMPLOSPCII - INTERFACES EM JAVA: EXEMPLOS
PCII - INTERFACES EM JAVA: EXEMPLOS
 
PCII AULA 3 - INTERFACES EM JAVA
PCII AULA 3 - INTERFACES EM JAVAPCII AULA 3 - INTERFACES EM JAVA
PCII AULA 3 - INTERFACES EM JAVA
 
PCII - AULA 2: HERANÇA EM JAVA
PCII -  AULA 2: HERANÇA EM JAVAPCII -  AULA 2: HERANÇA EM JAVA
PCII - AULA 2: HERANÇA EM JAVA
 
Visual Basic 2010 - Uma Aplicação com Banco de Dados (Controle de Despesas)
Visual Basic 2010 - Uma Aplicação com Banco de Dados (Controle de Despesas)Visual Basic 2010 - Uma Aplicação com Banco de Dados (Controle de Despesas)
Visual Basic 2010 - Uma Aplicação com Banco de Dados (Controle de Despesas)
 
Visual Basic 2010 - Gerando um Projeto de Instalação (Visual Studio Installer)
Visual Basic 2010 - Gerando um Projeto de Instalação (Visual Studio Installer)Visual Basic 2010 - Gerando um Projeto de Instalação (Visual Studio Installer)
Visual Basic 2010 - Gerando um Projeto de Instalação (Visual Studio Installer)
 
Visual Basic 2010 - Criando uma aplicação de Controle de Notas
Visual Basic 2010 - Criando uma aplicação de Controle de NotasVisual Basic 2010 - Criando uma aplicação de Controle de Notas
Visual Basic 2010 - Criando uma aplicação de Controle de Notas
 
GSOIII Aula 8 - ANDROID - CRIANDO UMA CALCULADORA
GSOIII Aula 8 - ANDROID - CRIANDO UMA CALCULADORAGSOIII Aula 8 - ANDROID - CRIANDO UMA CALCULADORA
GSOIII Aula 8 - ANDROID - CRIANDO UMA CALCULADORA
 
GSOIII - INTRODUÇÃO AO ANDROID
GSOIII - INTRODUÇÃO AO ANDROIDGSOIII - INTRODUÇÃO AO ANDROID
GSOIII - INTRODUÇÃO AO ANDROID
 
GSOIII (JAVA) CONEXÃO SIMPLES COM BANCO
GSOIII (JAVA) CONEXÃO SIMPLES COM BANCOGSOIII (JAVA) CONEXÃO SIMPLES COM BANCO
GSOIII (JAVA) CONEXÃO SIMPLES COM BANCO
 
GSOIII (JAVA) CONEXÃO MYSQL
GSOIII (JAVA)  CONEXÃO MYSQLGSOIII (JAVA)  CONEXÃO MYSQL
GSOIII (JAVA) CONEXÃO MYSQL
 

Programação concorrente em Java

  • 3. Programação Concorrente “Em várias situações, precisamos "rodar duas coisas ao mesmo tempo". Imagine um programa que gera um relatório muito grande em PDF. É um processo demorado e, para dar alguma satisfação para o usuário, queremos mostrar uma barra de progresso. Queremos então gerar o PDF e ao mesmo tempo atualizar a barrinha.” [Caelum]. Assoviar e Chupar Cana...
  • 4. Conceito de Thread “É uma forma de um processo dividir a si mesmo em duas ou mais tarefas que podem ser executadas concorrentemente”...“permite, por exemplo, que o usuário de um programa utilize uma funcionalidade do ambiente enquanto outras linhas de execução realizam outros cálculos e operações.” [Wikipedia].
  • 5. THREADS EM JAVA... É possível executar atividades concorrentes de 2 maneiras em java: 1. Estendendo a Classe Thread 2. Criando uma classe que implemente a interface Runnable.
  • 6. THREADS EM JAVA... A classe Thread do pacote java.lang é utilizada para programar linhas de execução paralelas. Ela recebe como argumento um objeto com o código que desejamos rodar. Exemplo: Estender Thread Método onde será executada as atividades da Thread
  • 7. Thread: Testando: THREADS EM JAVA... Executa enquanto condição for verdadeira Quando não for mais a Thread será finalizada Rodando a Thread
  • 9. Runnable: Testando: Rodando 2 Threads CRIAR UM IDENTIFICADOR 2 Threads ao mesmo tempo
  • 10. Para que uma thread durma podemos utilizar o método sleep: Sintaxe: Thread.sleep ( long tempoEmMilessegundos ) ; Pausando uma Thread Vamos adicionar à classe Runnable um campo de tempo de pausa para a Thread a cada execução.
  • 11. Pausando uma Thread (Testando)
  • 12. Criando um Relógio... Crie uma classe chamada Relógio
  • 13. Criando um Relógio... Crie um formulário (JFrame) chamado RelogioUI txtHora (JTextField) btnRelogio (JButton)
  • 14. Criando um Relógio... Codifique o clique do Botão:
  • 16. Formatando Data / Hora • Date A data representa o tempo, um tempo é composto por ano, mês, dia atual, minuto atual, entre outras propriedades que essa classe possui. • Calendar Essa classe pode produzir os valores de todos os campos de calendário necessários para implementar a formatação de data e hora. para obter um calendário é necessário usar o método estático getInstance(). • SimpleDateFormat Às vezes é preciso transformar um texto em uma data ou vice versa. Geralmente a classe SimpleDateFormat é mais usada quando trata-se de formatação de datas, pois já no seu construtor, quando instanciada, permite passar como argumento o formato da data desejada.
  • 18. Estender uma Thread é mais simples, mas você está usando herança apenas por "preguiça“. Herdamos um monte de métodos mas usamos apenas o método run, e não por polimorfismo, que seria a grande vantagem. Prefira implementar Runnable a herdar de Thread, pois você terá liberdade para ter objetos “rodáveis” de qualquer tipo e não só objetos que estendam da classe Thread. Runnable x Thread
  • 19. • [CAELUM] http://www.caelum.com.br/apostila-java-orientacao-objetos/programacao- concorrente-e-threads/ • [WIKIPEDIA] http://pt.wikipedia.org/wiki/Thread_(ci%C3%AAncia_da_computa%C3%A7%C3%A3o) • [ORACLE JAVA THREAD] http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html • [ORACLE JAVA RUNNABLE] http://docs.oracle.com/javase/7/docs/api/java/lang/Runnable.html • [GUJ] http://www.guj.com.br/articles/8 • [DEVMEDIA] http://www.devmedia.com.br/trabalhando-com-as-classes-date-calendar-e- simpledateformat-em-java/27401