1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Threads - wait()

Pessoal, eu estava procurando uns exercícios e encontrei esse exemplo no site da Oracle:

public class Bees {
public static void main(String[] args) {
try {
new Bees().go();
} catch (Exception e ) {
System.out.println("thrown to main");
}
}
synchronized void go() throws InterruptedException {
Thread t1 = new Thread();
t1.start();
System.out.print("1 ");
t1.wait(5000);
System.out.print("2 ");
}
}


What is the result? 
A) 1 then 2 with little delay 
B) 1 then 2 after 5 seconds
C) 1 thrown to main 
D) 1 2 thrown to main
E) Compilation fails.

No caso, a resposta é a letra C. Alguém poderia me explicar o pq? Eu pesquisei algumas coisas sobre Threads, sleep(), wait(), mas mesmo assim nao consegui entender exatamente o pq da resposta. Por curiosidade eu, retirei o t1.wait() por apenas wait(), e ele agiu como se fosse um sleep, imprimindo 1 e após 5s, imprimindo 2. Como utilizar o t1.wait() corretamente neste caso?

Valeu!

  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags java java8 threads ou faça a sua própria pergunta.