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++) {