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 !!!