Metodo Join na pripria classe [resolvido]

2 respostas
J

Oi gente, 3ª pergunta do dia rsrs

vi no testkiller a seguinte questão

public class Starter extends Thread { 
 private int x= 2; 
 public static void main(String[] args) throws Exception { 
 new Starter().makeItSo(); 
 } 
 public Starter() { 
 x=5; 
 start(); 
 } 
 public void makeItSo() throws Exception { 
 join();   // linha comentadaaaaaa
 x=x- 1; 
 System.out.println(x); 
 } 
 public void run() { x *= 2; } 
 }

opções

A. 4
B. 5
C. 8
D. 9
E. Compilation fails.
F. An exception is thrown at runtime.
G. It is impossible to determine for certain.

de acordo com o testkiller a resp é: D

tá, tudo bem eu entendi perfeitamente a lógica … mas observe na linha q eu comentei ao lado
ela tá chamando o metodo join, no proprio objeto
mas … se o join fala …

a thread que está rodando só vai poder continuar depois que eu terminar!

mas po … nesse caso, a thread que tá rodando é jah a classe que tá chamando join…

então … ela iria esperar por ela mesma acabar … para que ela mesma podesse continuar ??

pelo o que vi … issu não acontece
mas não seria essa a lógica?

não deveria lançar um erro?

ou esse caso caí na teoria do impasse entre threads e a JVM acaba executando alguma delas?

valewww

2 Respostas

A

Verifique que o método start() é chamado antes do método makeItSo, a classe Starter é criada e o método makeItSo é chamado em outra thread(a principal). join() está sendo chamado a partir da thread principal!. Assim o método run será executado normalmente na thread criada quando o método start() é chamado.

J

nossa …

intendi cara …

durmi no ponto mesmo rsrsrs e olha q eu fiquei moh cara olhando pra esse código ai ahuahu

valew

Criado 28 de janeiro de 2009
Ultima resposta 28 de jan. de 2009
Respostas 2
Participantes 2