Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Java
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com
Galxia
JSE
Java Standard
Edition
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com
Constelao
Mais da linguagem
Java
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com
Tpicos
Parte II Threads
Tpicos
Parte II Threads
Parte II
Threads
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com
Tpicos
Desafios
Introduo
Questes de concursos
Questes de concursos
Hora de praticar
Questes de concursos
Hora de praticar
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com
Tpicos
Questes de concursos
Hora de praticar
Hora de praticar
Questes de concursos
Prioridades de threads
Questes de concursos
Introduo sincronizao
Hora de praticar
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com
Tpicos
Hora de praticar
Questes de concursos
Desafios
10
Desafios
11
Desafios
12
Introduo
Processos
Threads
13
Introduo
Processos
14
Introduo
Threads
Incluindo:
Memria
Arquivos abertos
15
Introduo
Multithreading
Thread principal
Coleta de lixo
Finalizao de objetos
16
Questes de concursos
[CESPE 2008 SGA/AC Cargo 28] Com base nos conceitos de
linguagens de programao e anlise de sistemas, julgue o item
a seguir.
17
Questes de concursos
[CESPE 2008 SGA/AC Cargo 28] Com base nos conceitos de
linguagens de programao e anlise de sistemas, julgue o item
a seguir.
Gabarito: CERTO.
18
Nova
Nova
Executvel
Executvel
Concluda
Concluda
Em
Em espera
espera
Bloqueada
Bloqueada
Em
Em espera
espera
programada
programada
19
Executvel
Executvel
Adquire o bloqueio
Bloqueio adquirido
Em
Em espera
espera
Bloqueada
Bloqueada
Em
Em espera
espera
programada
programada
20
Nova
Executvel
E no em execuo (running)
21
Concluda
Bloqueada ou em espera
22
Bloqueada ou em espera
Bloqueada
Em espera
Esse estado
O estado de bloqueada
23
Bloqueada ou em espera
Espera programada
Chamar esses mtodos faz com que uma thread entre nesse estado
Importante
So de mquinas virtuais
24
Questes de concursos
[FCC 2008 MPE/RS Tcnico em Informtica rea Sistemas Classe M Questo 14] A classe Thread, utilizada para disparar
segmentos de processamento separados dentro de um programa
Java, quando est na fila apenas aguardando a sua vez para a
CPU se encontra no estado
[B] waiting.
[C] sleeping.
[D] runnable.
[E] running.
25
Questes de concursos
[FCC 2008 MPE/RS Tcnico em Informtica rea Sistemas Classe M Questo 14] A classe Thread, utilizada para disparar
segmentos de processamento separados dentro de um programa
Java, quando est na fila apenas aguardando a sua vez para a
CPU se encontra no estado
[B] waiting.
[C] sleeping.
[D] runnable.
[E] running.
26
Questes de concursos
[FCC 2006 MPE/PE Analista Ministerial rea Informtica
Questo 35] Sobre Java, considere:
[I] Uma thread pode ser executada mesmo que seu mtodo
run tenha completado ou terminado por alguma razo.
27
Questes de concursos
[FCC 2006 MPE/PE Analista Ministerial rea Informtica
Questo 35] Sobre Java, considere:
Gabarito: ERRADO.
28
Questes de concursos
[CESPE 2011 PREVIC Cargo 4] Acerca de programao Java e
JavaScript, julgue o item que se segue.
29
Questes de concursos
[CESPE 2011 PREVIC Cargo 4] Acerca de programao Java e
JavaScript, julgue o item que se segue.
Gabarito: ERRADO.
30
Questes de concursos
[AOCP 2012 BRDE Analista de Sistemas Desenvolvimento de
Sistemas Prova TIPO 4] Analise as assertivas e assinale a
alternativa que aponta as corretas sobre os diferentes estados
que uma Thread Java pode estar.
[I] Nova
[II] Executvel
[III] Bloqueada
[IV] Terminada
[V] Esquecida
[VI] Persistida.
31
Questes de concursos
[AOCP 2012 BRDE Analista de Sistemas Desenvolvimento de
Sistemas Prova TIPO 4] Analise as assertivas e assinale a
alternativa que aponta as corretas sobre os diferentes estados
que uma Thread Java pode estar.
[I] Nova
[II] Executvel
[III] Bloqueada
[IV] Terminada
[V] Esquecida
[VI] Persistida.
32
Questes de concursos
[AOCP 2012 BRDE Analista de Sistemas Desenvolvimento de
Sistemas Prova TIPO 4] Analise as assertivas e assinale a
alternativa que aponta as corretas sobre os diferentes estados
que uma Thread Java pode estar.
33
Object
Object
Thread
Thread
Runnable
Runnable
Classe1
Classe1
Classe2
Classe2
34
java.lang.Thread
package java.lang;
java.lang.Runnable
package java.lang;
}
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com
35
java.lang.Thread
java.lang.Runnable
36
Forma 1:
Forma 2:
mais utilizada
37
Forma 1:
Exemplo:
}
}
Classe principal:
thread.start();
}
}
38
Forma 2:
Exemplo:
}
}
Classe principal:
thread.start();
}
}
39
40
Hora de praticar
constelacao03.parte02
Exemplo01_DefinindoIniciandoThreads
constelacao03.parte02.classes
EstendendoThread
ImplementandoRunnable
41
Questes de concursos
[ESAF 2006 CGU Analista de Finanas e Controle Tecnologia
da Informao Questo 18] As unidades concorrentes em Java
so objetos que incluem um mtodo chamado run, cujo cdigo
pode estar em execuo concorrente. Uma das maneiras de se
definir uma classe cujos objetos podem ter mtodos
concorrentes definir uma
42
Questes de concursos
[ESAF 2006 CGU Analista de Finanas e Controle Tecnologia
da Informao Questo 18] As unidades concorrentes em Java
so objetos que incluem um mtodo chamado run, cujo cdigo
pode estar em execuo concorrente. Uma das maneiras de se
definir uma classe cujos objetos podem ter mtodos
concorrentes definir uma
43
Questes de concursos
[CESPE 2012 ANAC Cargo 4] Acerca da execuo dos trechos de
cdigos referentes linguagem de programao Java, julgue os
itens seguintes.
teste.start();
System.out.println("ANAC");
}
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com
44
Questes de concursos
[CESPE 2012 ANAC Cargo 4] Acerca da execuo dos trechos de
cdigos referentes linguagem de programao Java, julgue os
itens seguintes.
Gabarito: ERRADO.
45
Thread.sleep
No garantido
46
Thread.sleep
Lana as excees:
47
Thread.sleep
Milissegundos
Nanossegundos
Lanas as excees:
48
Thread.yield
49
Thread.yield
Sistema operacional
Verso do Java
Exemplo:
while (true) {
50
51
Hora de praticar
constelacao03.parte02
Exemplo02_PausandoThreadsSleep
Exemplo03_PausandoThreadsYield
52
Questes de concursos
[FUNIVERSA 2012 PC/DF Perito Criminal Informtica]
new Thread(mt).start();
Thread.yield();
System.out.println(j);
j++; ++j;
}
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com
53
Questes de concursos
[FUNIVERSA 2012 PC/DF Perito Criminal Informtica] Com
base na execuo do programa Java apresentado, assinale a
alternativa correta.
54
Questes de concursos
[FUNIVERSA 2012 PC/DF Perito Criminal Informtica] Com
base na execuo do programa Java apresentado, assinale a
alternativa correta.
55
Questes de concursos
[FCC 2009 TRE/AM - Tcnico Judicirio - Programao de
Sistemas Questo 45] Quanto aos escalonamentos de threads
em Java, considere:
56
Questes de concursos
[FCC 2009 TRE/AM - Tcnico Judicirio - Programao de
Sistemas Questo 45] Quanto aos escalonamentos de threads
em Java, considere:
Gabarito: ERRADO.
Gabarito: CERTO.
57
Questes de concursos
[ESAF 2008 STN Analista de Finanas e Controle Tecnologia
da Informao Desenvolvimento de Sistemas da Informao Questo 25] Considere o seguinte fragmento de cdigo, para o
mtodo run() de uma determinada linha de execuo (thread),
em Java.
1. try{
2. sleep(1000);
58
Questes de concursos
[ESAF 2008 STN Analista de Finanas e Controle Tecnologia
da Informao Desenvolvimento de Sistemas da Informao Questo 25] Se considerarmos que a linha de execuo no
interrompida, correto afirmar que
59
Questes de concursos
[ESAF 2008 STN Analista de Finanas e Controle Tecnologia
da Informao Desenvolvimento de Sistemas da Informao Questo 25] Se considerarmos que a linha de execuo no
interrompida, correto afirmar que
60
Questes de concursos
[CESPE 2010 INMETRO Cargo 14 - Questo 64] Em relao ao
uso de threads na linguagem Java, assinale a opo correta.
61
Questes de concursos
[CESPE 2010 INMETRO Cargo 14 - Questo 64] Em relao ao
uso de threads na linguagem Java, assinale a opo correta.
Gabarito: ERRADO.
O mtodo yield faz com que uma thread atualmente em
execuo temporariamente pause para permitir que outras
possam ser executadas
62
java.lang.Thread
Lana as excees:
63
java.lang.Thread
64
65
Hora de praticar
constelacao03.parte02
Exemplo04_InterrompendoThreads
66
Thread.join
Lana a exceo:
Lana as excees:
67
Thread.join
Lana as excees:
68
69
Hora de praticar
constelacao03.parte02
Exemplo05_Join
70
Questes de concursos
[CESPE 2010 INMETRO Cargo 14 - Questo 64] Em relao ao
uso de threads na linguagem Java, assinale a opo correta.
71
Questes de concursos
[CESPE 2010 INMETRO Cargo 14 - Questo 64] Em relao ao
uso de threads na linguagem Java, assinale a opo correta.
Gabarito: CERTO.
72
Questes de concursos
[CESGRANRIO 2012 PETROBRAS Analista de Sistemas Jnior
Engenharia de Software Questo 23] Sejam as seguintes classes
Java:
try {
Thread.currentThread().join(0);
System.out.println(10);
}
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com
73
Questes de concursos
[CESGRANRIO 2012 PETROBRAS Analista de Sistemas Jnior
Engenharia de Software Questo 23] Sejam as seguintes classes
Java:
catch(SecurityException e) {
System.out.println(20);
}
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com
74
Questes de concursos
[CESGRANRIO 2012 PETROBRAS Analista de Sistemas Jnior
Engenharia de Software Questo 23] Sejam as seguintes classes
Java:
catch(IllegalMonitorStateException e) {
System.out.println(30);
}
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com
75
Questes de concursos
[CESGRANRIO 2012 PETROBRAS Analista de Sistemas Jnior
Engenharia de Software Questo 23] Sejam as seguintes classes
Java:
catch(IllegalArgumentException e) {
System.out.println(40);
}
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com
76
Questes de concursos
[CESGRANRIO 2012 PETROBRAS Analista de Sistemas Jnior
Engenharia de Software Questo 23] Sejam as seguintes classes
Java:
catch(Exception e) {
System.out.println(50);
}
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com
77
Questes de concursos
[CESGRANRIO 2012 PETROBRAS Analista de Sistemas Jnior
Engenharia de Software Questo 23] Sejam as seguintes classes
Java:
t.start();
t.interrupt();
78
Questes de concursos
[CESGRANRIO 2012 PETROBRAS Analista de Sistemas Jnior
Engenharia de Software Questo 23] O que ser exibido no
console aps a execuo do comando t.interrupt()?
[A] 10
[B] 20
[C] 30
[D] 40
[E] 50
79
Questes de concursos
[CESGRANRIO 2012 PETROBRAS Analista de Sistemas Jnior
Engenharia de Software Questo 23] O que ser exibido no
console aps a execuo do comando t.interrupt()?
[A] 10
[B] 20
[C] 30
[D] 40
[E] 50
80
Prioridades de threads
Escalonamento de tarefas
As prioridades variam:
De 1 (MIN_PRIORITY)
A 10 (MAX_PRIORITY)
81
Prioridades de threads
Por padro:
82
Prioridades de threads
Em partes iguais
De forma circular
83
Prioridades de threads
84
Prioridades de threads
java.lang.Thread
Lana a exceo:
85
Prioridades de threads
java.lang.Thread
Possui o valor 1
Possui o valor 5
Possui o valor 10
86
Questes de concursos
[FCC 2009 TRE/AM - Tcnico Judicirio - Programao de
Sistemas Questo 45] Quanto aos escalonamentos de threads
em Java, considere:
87
Questes de concursos
[FCC 2009 TRE/AM - Tcnico Judicirio - Programao de
Sistemas Questo 45] Quanto aos escalonamentos de threads
em Java, considere:
Gabarito: CERTO.
88
Questes de concursos
[FCC 2006 MPE/PE Analista Ministerial rea Informtica
Questo 35] Sobre Java, considere:
89
Questes de concursos
[FCC 2006 MPE/PE Analista Ministerial rea Informtica
Questo 35] Sobre Java, considere:
Gabarito: CERTO.
90
Questes de concursos
[CESPE 2010 INMETRO Cargo 14 - Questo 64] Em relao ao
uso de threads na linguagem Java, assinale a opo correta.
91
Questes de concursos
[CESPE 2010 INMETRO Cargo 14 - Questo 64] Em relao ao
uso de threads na linguagem Java, assinale a opo correta.
Gabarito: ERRADO.
92
Questes de concursos
[AOCP 2012 BRDE Analista de Sistemas Suporte] Sobre
Prioridade e Agendamento de Thread na linguagem de
programao Java, analise as assertivas e assinale a alternativa
que aponta a(s) correta(s).
93
Questes de concursos
[AOCP 2012 BRDE Analista de Sistemas Suporte] Sobre
Prioridade e Agendamento de Thread na linguagem de
programao Java, analise as assertivas e assinale a alternativa
que aponta a(s) correta(s).
94
Questes de concursos
[AOCP 2012 BRDE Analista de Sistemas Suporte] Sobre
Prioridade e Agendamento de Thread na linguagem de
programao Java, analise as assertivas e assinale a alternativa
que aponta a(s) correta(s).
[A] Apenas I.
95
Introduo sincronizao
Condio de corrida
a situao onde:
96
Introduo sincronizao
Termos:
Excluso mtua
Regio crtica
97
98
Hora de praticar
constelacao03.parte02
Exemplo06_CondicaoCorrida
constelacao03.parte02.classes.naobloqueado
Banco
99
Palavra-chave synchronized
100
java.util.concurrent.locks.Lock
void lock()
void unlock()
java.util.concurrent.locks.ReentrantLock
public ReentrantLock()
101
lock.lock();
try {
} finally {
// Seo crtica.
lock.unlock();
102
Palavra-chave synchronized
Sincronizao de declaraes
Sintaxe:
synchronized (this) {
// Contedo do mtodo.
}
}
Sincronizao de mtodos
Sintaxe:
// Contedo do mtodo.
}
103
java.lang.Object
Faz uma thread esperar at ser notificada por outra que invoca um
dos mtodos:
notify()
notifyAll()
Lana a exceo:
104
java.lang.Object
notify()
notifyAll()
Que um perodo de tempo especificado tenha passado
Lana a exceo:
105
java.lang.Object
Lana a exceo:
106
java.lang.Object
Lana a exceo:
107
java.lang.Object
Lana a exceo:
108
109
Hora de praticar
constelacao03.parte02
Exemplo07_Lock
constelacao03.parte02.classes.bloqueado
Banco
110
Questes de concursos
[CESPE 2010 INMETRO Cargo 14 - Questo 64] Em relao ao
uso de threads na linguagem Java, assinale a opo correta.
111
Questes de concursos
[CESPE 2010 INMETRO Cargo 14 - Questo 64] Em relao ao
uso de threads na linguagem Java, assinale a opo correta.
Gabarito: ERRADO.
112
Questes de concursos
[CESPE 2007 Corpo de Bombeiros Militar do Distrito Federal
Opo 27] Quanto a programao Java usando threads, sockets e
applets, julgue os itens subseqentes.
113
Questes de concursos
[CESPE 2007 Corpo de Bombeiros Militar do Distrito Federal
Opo 27] Quanto a programao Java usando threads, sockets e
applets, julgue os itens subseqentes.
Gabarito: ERRADO.
Gabarito: CERTO.
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com
114
Questes de concursos
[CESPE 2007 Corpo de Bombeiros Militar do Distrito Federal
Opo 27] Quanto a programao Java usando threads, sockets e
applets, julgue os itens subseqentes.
115
Questes de concursos
[CESPE 2007 Corpo de Bombeiros Militar do Distrito Federal
Opo 27] Quanto a programao Java usando threads, sockets e
applets, julgue os itens subseqentes.
Gabarito: ERRADO.
116
Questes de concursos
[CESGRANRIO 2013 BNDES - Anlise de Sistemas
Desenvolvimento Questo 43] Qual mtodo pertencente
biblioteca nativa de Java NO capaz de bloquear a execuo de
uma thread?
[A] Object.wait()
[B] ReentrantLock.lock()
[C] Thread.join()
[D] FileInputStream.read()
[E] Thread.yield()
117
Questes de concursos
[CESGRANRIO 2013 BNDES - Anlise de Sistemas
Desenvolvimento Questo 43] Qual mtodo pertencente
biblioteca nativa de Java NO capaz de bloquear a execuo de
uma thread?
[A] Object.wait()
[B] ReentrantLock.lock()
[C] Thread.join()
[D] FileInputStream.read()
[E] Thread.yield()
118
Processos
Threads
Gabarito: ERRADO.
Gabarito: CERTO.
119
120
Nova
Executvel
Concluda
Em espera
Bloqueada
Em espera programada
Gabarito: ERRADO.
121
Forma 1:
Forma 2:
122
123
De 1 (MIN_PRIORITY)
A 10 (MAX_PRIORITY)
124
Gabarito: CERTO.
a situao onde:
125
Palavra-chave synchronized
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com
126
Referncias
127
Referncias
Enum Thread.State:
http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Thre
ad.State.html
HORSTMANN, Cay S. e CORNELL, Gary. Core Java Volume I Fundamentos. 8 Edio. Editora Pearson Prentice Hall, 2010.
How-To: Implementando Threads em Java:
http://imasters.com.br/artigo/20205/java/how-toimplementando-threads-em-java/
How to join thread in java: http://www.javaconnect.com/thread/How-to-join-thread-in-java.html
Introduo ao uso de Threads em Java:
http://www.ime.usp.br/~gold/cursos/2004/mac438/threadsE
mJava.pdf
rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoaraujo@gmail.com
128
Referncias
129
130