Threads: Introdução e Implementação
Professor: Hyggo Almeida
O que vimos na última aula?
Visão crítica sobre padrões
 Revisão final
 Qual o impacto do “E se”?

Over Engineering
Threads: Introdução e Implementação
2
O que veremos hoje?
Threads


Introdução
Implementação
Threads: Introdução e Implementação
3
O que é uma Thread ?
Uma thread é um contexto ou linha de execução
 “Vários programas executando em um mesmo
programa”
Vários contextos
em abas
Threads: Introdução e Implementação
4
O que é uma Thread ?
Programas “normais” (single thread) possuem apenas uma
linha de execução...
Threads: Introdução e Implementação
5
O que é uma Thread ?
Programas com mais de uma thread (multithreaded)
possuem mais de uma linha de execução dentro do
programa...
Threads: Introdução e Implementação
6
O que é uma Thread ?
Uma thread é um fluxo único de controle seqüencial dentro
de um programa
Parece ser um processo...

...mas compartilha o mesmo “espaço de endereçamento”

...é muito rápido chavear entre threads...
Uma thread possui...

Uma pilha de execução para chamar métodos, passar
parâmetros, alocar variáveis locais...

Um Program Counter...
Threads: Introdução e Implementação
7
As classes Timer e TimerTask
Antes de implementarmos uma thread...
 ...vamos utilizar objetos que utilizam
thread para executar o seu trabalho
Classe Timer
 Utilizada para escalonar tarefas
 Escalona instâncias de TimerTask
Threads: Introdução e Implementação
8
Exemplo de implementação...
public class Reminder {
Timer timer;
public Reminder(int seconds) {
timer = new Timer();
timer.schedule(new RemindTask(),seconds*1000);
}
class RemindTask extends TimerTask {
public void run() {
System.out.println(“Tarefa realizada.”);
timer.cancel(); //Finaliza o Timer
}
}
public static void main(String args[]) {
new Reminder(5);
System.out.println(“Tarefa escalonada.”);
}
}
9
As classes Timer e TimerTask
Vamos implementar e ver o resultado!
Tarefa escalonada.
(depois de 5 segundos)
Tarefa realizada!
E se usássemos Thread.sleep()
diretamente???
Threads: Introdução e Implementação
10
Implementando Threads
Duas formas:
 Extensão da Classe Thread
 Implementação da interface Runnable
Qual escolher?
 Se sua classe precisa herdar de uma outra
classe do seu modelo de negócio... use
interface!
Threads: Introdução e Implementação
11
Estendendo Thread
public class SimpleThread extends Thread {
public SimpleThread(String str) {
super(str);
}
public void run() {
for (int i = 0; i < 10; i++) {
System.out.println(i + “ ” + getName());
try {
sleep((long)(Math.random() * 1000));
} catch (InterruptedException e) {}
}
System.out.println(“Feito! ” + getName());
}
}
Threads: Introdução e Implementação
12
Utilizando a implementação com Thread
public class TestTwoThreads {
public static void main(String[] args) {
new SimpleThread("hyggo").start();
new SimpleThread("almeida").start();
System.out.println("Thread principal finalizada!");
}
}
Threads: Introdução e Implementação
13
Implementando Runnable
public class SimpleThread implements Runnable {
public void run() {
for (int i = 0; i < 10; i++) {
System.out.println(i + “ ” + Thread.currentThread().getName());
try {
Thread.sleep((long)(Math.random() * 1000));
} catch (InterruptedException e) {}
}
System.out.println(“Feito! ”+ Thread.currentThread().getName());
}
}
Threads: Introdução e Implementação
14
Utilizando a implementação com Runnable
public class TestTwoThreads {
public static void main(String[] args) {
new Thread(new SimpleThread(),"hyggo").start();
new Thread(new SimpleThread(),"almeida").start();
System.out.println("Thread principal finalizada!");
}
}
Threads: Introdução e Implementação
15
O que vimos hoje?
Threads


Introdução
Implementação
Threads: Introdução e Implementação
16
O que veremos na próxima aula?
Threads


Ciclo de vida
Escalonamento de Threads
Threads: Introdução e Implementação
17
Dúvidas?
?
Threads: Introdução e Implementação
18
Download

17.IntroThreads