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