| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/10/2003 22:28:20
|
ana_abrantes
JavaGuru
![[Avatar]](/images/avatar/c8b958be3f6282eb1e3fa.gif)
Membro desde: 29/08/2003 15:44:09
Mensagens: 238
Localização: São Paulo
Offline
|
Tirado do mock do Dan Chisholm:
What is the result of attempting to compile and run the program?
a. Prints: A
b. Prints: B
c. Prints: AB
d. Prints: BA
e. Compile-time error
f. Run-time error
g. None of the above
|
Ana
SCJP 1.4 - SCWCD 1.4 |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/10/2003 23:04:01
|
ricardolecheta
GUJ Master
![[Avatar]](/images/avatar/b59c67bf196a4758191e42f76670ceba.jpg)
Membro desde: 17/05/2003 13:42:10
Mensagens: 1486
Localização: Curitiba
Offline
|
imprime A
o construtor de Thread pode receber um Runnable, este exemplo apenas sobrescreve este construtor
vale lembrar que agora não existe mais o construtor default:
|
Ricardo R. Lecheta
Livro - Google Android (português)
http://www.livroandroid.com.br/
http://livroandroid.blogspot.com/
http://www.livetouch.com.br/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/10/2003 23:17:53
|
danieldestro
Moderador
![[Avatar]](/images/avatar/a5bfc9e07964f8dddeb95fc584cd965d.png)
Membro desde: 04/09/2002 17:26:16
Mensagens: 6667
Localização: São Paulo / Catanduva
Offline
|
Isso mesmo.. ele imprime "A".
|
gotjava?
Doe sangue
What You See Is What You Get!
Apostilas de Java grátis!
RefsCALL - Bandeira Eletrônica para Árbitro de Futebol |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/10/2003 10:22:04
|
ana_abrantes
JavaGuru
![[Avatar]](/images/avatar/c8b958be3f6282eb1e3fa.gif)
Membro desde: 29/08/2003 15:44:09
Mensagens: 238
Localização: São Paulo
Offline
|
A resposta é A mesmo, eu só não consegui entender porque executa o run() de A e não de B já que este é o Runnable passado como parâmetro.
Aliás estou ficando desanimada com este assunto de Threads, alguém sabe onde posso encontrar uma explicação melhor do seu funcionamento, pois já vi no curso que fiz, no livro de certificação, no tutorial, etc e as questões do simulado são muito diferentes e complicadas do que estas fontes !
Na verdade eu não estou conseguindo visualizar todos estes detalhes que estão nas questões dos mocks...
Obrigada...
|
Ana
SCJP 1.4 - SCWCD 1.4 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/10/2003 11:51:37
|
Daniel Quirino Oliveira
Moderador
![[Avatar]](/images/avatar/846c260d715e5b854ffad5f70a516c88.png)
Membro desde: 23/03/2003 23:57:34
Mensagens: 3299
Localização: Awawawawa (Araraquara) - SP
Offline
|
[editado]Daniel falou besteira e, para o bem da humanidade, editou este post. Volte sempre.
[/editado]
|
Daniel Quirino Oliveira |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/10/2003 12:32:40
|
danieldestro
Moderador
![[Avatar]](/images/avatar/a5bfc9e07964f8dddeb95fc584cd965d.png)
Membro desde: 04/09/2002 17:26:16
Mensagens: 6667
Localização: São Paulo / Catanduva
Offline
|
Como o método run() foi sobrescrito, ele não chamará o método run() do Runnable, pois, creio eu, a implementação default do run() da classe Thread seja:
|
gotjava?
Doe sangue
What You See Is What You Get!
Apostilas de Java grátis!
RefsCALL - Bandeira Eletrônica para Árbitro de Futebol |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/10/2003 15:48:15
|
ana_abrantes
JavaGuru
![[Avatar]](/images/avatar/c8b958be3f6282eb1e3fa.gif)
Membro desde: 29/08/2003 15:44:09
Mensagens: 238
Localização: São Paulo
Offline
|
Aí é que fica a confusão...
Vejamos o seguinte exemplo:
Neste caso o método run() executado é o do objeto MyRunnable passado como parâmetro para o objeto Thread.
Este é um exemplo que encontrei em todas as minhas fontes de estudo...
Ou seja, o parâmetro para a Thread é o target a ser usado.
Daí eu não me convenci porque é usado o run() da subclasse de Thread na questão que coloquei acima.
Será porque ela tem prioridade sobre a runnable do target?
|
Ana
SCJP 1.4 - SCWCD 1.4 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/10/2003 16:15:31
|
danieldestro
Moderador
![[Avatar]](/images/avatar/a5bfc9e07964f8dddeb95fc584cd965d.png)
Membro desde: 04/09/2002 17:26:16
Mensagens: 6667
Localização: São Paulo / Catanduva
Offline
|
Não, mas pelo fato de VOCÊ ter SOBRESCRITO o método run( ) da Thread (no exemplo anterior), ele não "chamou" o método run( ) da Runnable.
rode os exemplos:
e então
|
gotjava?
Doe sangue
What You See Is What You Get!
Apostilas de Java grátis!
RefsCALL - Bandeira Eletrônica para Árbitro de Futebol |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/10/2003 16:30:07
|
ana_abrantes
JavaGuru
![[Avatar]](/images/avatar/c8b958be3f6282eb1e3fa.gif)
Membro desde: 29/08/2003 15:44:09
Mensagens: 238
Localização: São Paulo
Offline
|
Acho que agora eu entendi...
Obrigada.
|
Ana
SCJP 1.4 - SCWCD 1.4 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 10/05/2005 23:30:24
|
sandro_maximo@hotmail.com
What is classpath?
![[Avatar]](/images/avatar/54fda78aa8a09b4d77b5aaec57b75028.jpg)
Membro desde: 07/05/2004 16:39:59
Mensagens: 8
Localização: RJ
Offline
|
Olá, pessoal.
Também estou estudando para certificação, e essa discução de vcs me deixou em dúvida.
No meu entendimento o que ocorre é o seguinte.
No primeiro caso é criado uma instância de uma classe Thread (A extends Thread) , passando como parâmetro uma instância de uma classe Runnable (B implements Runnable).
new A(new B()).start();
O comando acima equivale a :
A obj = new A(new B());
Como A tem um contrutor que recebe um Runnable, que chama (super(r)) o contrutor,não default, de Thread passando um Runnable, tudo bem até aqui.
obj.star();
Bom, o método start que está sendo executado é o da classe A.
Sendo assim, o método run() que será executado é o da classe A, e o da classe B não será executado porque não foi executado o método start dela.
Obs1.:
Se substituirmo a linha
new A(new B()).start();
por
B obj1=newB();
new A(obj1).start();
B.start();
O método run() de B também será executado.
Correto ?
|
A Vida "pode" ser maravilhosa.
Depende de Nós !
Sandro Maximo |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/05/2005 16:08:26
|
marcelo_takeshi
Smalltalk
Membro desde: 21/05/2005 15:06:40
Mensagens: 1
Offline
|
Se substituirmo a linha
new A(new B()).start();
por
B obj1=newB();
new A(obj1).start();
B.start();
O método run() de B também será executado.
Correto ?
na verdade nao. Na verdade a questão acho q é mais sobre herança certo?
vou tentar explicar o q eu acho q acontece:
A classe Thread devia ter um método run parecido com o seguinte:
public void run() {
runnable.run();
}
onde runnable é o Runnable q vc passa na instanciação. qd vc especializa a classe, este método é sobrescrito pelo seu run() q vai executar o q vc necessita (no caso, imprimir A). De certa forma, o método run acima que olha para o Runnable recebido como argumento não é executado (a menos q vc chame explicitamente super.run() e, no caso, o resultado seria a impressão de B)...
consegui explicar um pouquinho?
[]s
takeshi
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 26/01/2011 10:37:05
|
saulo_f
What is classpath?
![[Avatar]](/images/avatar/83c10bba7b7362a7ddf914c395a7ed83.jpg)
Membro desde: 26/01/2011 10:13:02
Mensagens: 6
Offline
|
O codigo da implementação da classe
OBS: target é a referência do objeto Runnable passado no construtor!
|
Saulo Freitas
@Saulo_f |
|
|
 |
|
|