Avatar ·

Qual é a diferença entre os métodos wait() e sleep() em Java? Exemplos com código

Olá a todos! Comecei a estudar multithreading em Java e fiquei confuso com os métodos wait() e sleep(). Ambos parecem pausar a execução de uma thread, mas se comportam de maneira diferente. Ajude-me a entender. Tenho um exemplo simples. Crio duas threads: uma produz dados, a outra os consome. Uso sleep() para sincronização: ```java class Producer extends Thread { private List buffer = new ArrayList<>(); public void run() { for (int i = 0; i < 10; i++) { buffer.add(i); System.out.println("Produzido: " + i); try { Thread.sleep(100); // Espera o consumidor pegar } catch (InterruptedException e) {} } } public int getValue() { return buffer.remove(0); } } class Consumer extends Thread { private Producer producer; Consumer(Producer p) { producer = p; } public void run() { for (int i = 0; i < 10; i++) {