Escolar Documentos
Profissional Documentos
Cultura Documentos
18/01/15 15:03
CAPTULO 17
Programao Concorrente e
Threads
"O nico lugar onde o sucesso vem antes do trabalho no
dicionrio."
Albert Einstein
Ao trmino desse captulo, voc ser capaz de:
executar tarefas simultaneamente;
colocar tarefas para aguardar at que um determinado evento
ocorra;
entender o funcionamento do Garbage Collector.
17.1 - THREADS
"Duas tarefas ao mesmo tempo"
http://www.caelum.com.br/apostila-java-orientacao-objetos/programacao-concorrente-e-threads/#17-1-threads
Pgina 1 de 17
18/01/15 15:03
processos em paralelo.
Em um programa s (um processo s), se queremos executar
coisas em paralelo, normalmente falamos de Threads.
Threads em Java
Em Java, usamos a classe Thread do pacote java.lang para criarmos
Pgina 2 de 17
18/01/15 15:03
}
public class BarraDeProgresso {
public void rodar () {
// mostra barra de progresso e vai atualizando ela...
}
}
Pgina 3 de 17
18/01/15 15:03
Pgina 4 de 17
18/01/15 15:03
// ...
}
}
Dormindo
Para que a thread atual durma basta chamar o mtodo a
seguir, por exemplo, para dormir 3 segundos:
Thread.sleep(3 * 1000);
http://www.caelum.com.br/apostila-java-orientacao-objetos/programacao-concorrente-e-threads/#17-1-threads
Pgina 5 de 17
18/01/15 15:03
3
4
5
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Pgina 6 de 17
18/01/15 15:03
Pgina 7 de 17
18/01/15 15:03
E em mais de um processador?
A VM do Java e a maioria dos SOs modernos consegue fazer
proveito de sistemas com vrios processadores ou multicore. A diferena que agora temos mais de um processador
executando coisas e teremos, sim, execues
verdadeiramente paralelas.
Mas o nmero de processos no SO e o nmero de Threads
http://www.caelum.com.br/apostila-java-orientacao-objetos/programacao-concorrente-e-threads/#17-1-threads
Pgina 8 de 17
18/01/15 15:03
Pgina 9 de 17
18/01/15 15:03
Pgina 10 de 17
18/01/15 15:03
System.gc()
Voc nunca consegue forar o Garbage Collector, mas
chamando o mtodo esttico gc da classe System, voc est
sugerindo que a Virtual Machine rode o Garbage Collector
naquele momento. Se sua sugesto vai ser aceita ou no,
isto depende de JVM para JVM, e voc no tem garantias.
Evite o uso deste mtodo. Voc no deve basear sua
aplicao em quando o Garbage Collector vai rodar ou no.
Finalizer
A classe Object define tambm um mtodo finalize, que
voc pode reescrever. Esse mtodo ser chamado no
instante antes do Garbage Collector coletar este objeto. No
um destrutor, voc no sabe em que momento ele ser
chamado. Algumas pessoas o utilizam para liberar recursos
"caros" como conexes, threads e recursos nativos. Isso
deve ser utilizado apenas por segurana: o ideal liberar
esses recursos o mais rpido possvel, sem depender da
passagem do Garbage Collector.
http://www.caelum.com.br/apostila-java-orientacao-objetos/programacao-concorrente-e-threads/#17-1-threads
Pgina 11 de 17
18/01/15 15:03
17.4 - EXERCCIOS
1. Teste o exemplo deste captulo para imprimir nmeros em
paralelo.
Escreva a classe Programa:
1
3
4
5
6
7
8
+ i);
}
10
11
3
4
5
6
7
8
9
10
11
12
13
14
http://www.caelum.com.br/apostila-java-orientacao-objetos/programacao-concorrente-e-threads/#17-1-threads
Pgina 12 de 17
18/01/15 15:03
15
16
17
Pgina 13 de 17
18/01/15 15:03
Pgina 14 de 17
18/01/15 15:03
Pgina 15 de 17
18/01/15 15:03
CAPTULO ANTERIOR:
PRXIMO CAPTULO:
Collections framework
E agora?
Blog
Caelum
Cursos
Online
Newsletter
http://www.caelum.com.br/apostila-java-orientacao-objetos/programacao-concorrente-e-threads/#17-1-threads
Pgina 16 de 17
Casa do
Cdigo
18/01/15 15:03
http://www.caelum.com.br/apostila-java-orientacao-objetos/programacao-concorrente-e-threads/#17-1-threads
Pgina 17 de 17