Quelle est la différence entre les méthodes wait() et sleep() en Java ? Exemples avec code
Bonjour à tous ! J'ai commencé à étudier le multithreading en Java et je me suis embrouillé avec les méthodes wait() et sleep(). Apparemment, les deux suspendent l'exécution d'un thread, mais se comportent différemment. Aidez-moi à comprendre.
J'ai un exemple simple. Je crée deux threads : l'un produit des données, l'autre les consomme. J'utilise sleep() pour la synchronisation :
```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("Produit : " + i);
try {
Thread.sleep(100); // Attend que le consommateur prenne
} 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++) {