Uma boa de Thread

2 respostas
wbsouza

Considere o codigo abaixo:

public class TestClassThread {
    public Mumbo mumbo = new Mumbo();
    public Jumbo jumbo = new Jumbo();

    class Mumbo {
        public synchronized void doIt() {
            try {
                LINE_1 : wait();
                System.out.println("done");
            }
            catch (Exception e) {
            }
        }
    }

    class Jumbo extends Thread {
        public void run() {
            mumbo.doIt();
        }

    }

    public TestClassThread() throws Exception {
        jumbo.start();
        Thread.sleep(1000);
        LINE_2 : //insert code here 

    }

    public static void main(String[] args) throws Exception {
        new TestClassThread();
    }
}

Assuma que você está executando o programa acima. O thread
jumbo está executando a instrução em LINE_1 através da chamada
do metodo run() que foi invocado pela chamada do metodo jumbo.start().

O que é necessário colocar em LINE_2, para que o programa imprima "done"
e finalize a execução do thread.

a) synchronized(this){ this.notifyAll(); }

b) synchronized(jumbo){ jumbo.notifyAll(); }

c) synchronized(mumbo){ mumbo.notifyAll(); }

d) synchronized(mumbo){ Thread.interrupt(); }

e) this.getCurrentThread().interrupt();

Boa diversão !!!

2 Respostas

TaQ

Primeiro vc tem arrumar o construtor por que ele ta errado ehehe ao invés de:
new TestClass();

seria
new TestClassThread();

e a resposta seria a opção C:
synchronized(mumbo){ mumbo.notifyAll(); }

A TestClassThread tem Mumbo e Jumbo dentro dela, e pode pode chamar a notifyAll da mumbo …

wbsouza

Cometí uma gafe, mas agora já corrigji :oops:

A resposta está correta! é isso aí, letra C

Criado 19 de julho de 2003
Ultima resposta 19 de jul. de 2003
Respostas 2
Participantes 2