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
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.
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