Que signifie le mot-clé synchronized en Java ? Expliquez en termes simples avec des exemples
Bonjour, collègues ! Je suis novice en Java et je n'arrive pas à comprendre ce que fait le mot-clé `synchronized`. J'ai lu la documentation, mais elle me semble trop compliquée.
J'ai une classe simple `Counter` qui incrémente un compteur dans plusieurs threads. Je m'attends à ce que chaque thread ajoute 1000 au compteur total, mais le résultat est toujours différent : tantôt 1987, tantôt 2003, alors qu'il devrait être exactement 2000 (deux threads de 1000). Voici mon code :
```java
public class Counter {
private int count = 0;
public void increment() {
count++;
}
public int getCount() {
return count;
}
}
public class Main {
public static void main(String[] args) throws InterruptedException {
Counter counter = new Counter();
Thread t1 = new Thread(() -> {
for (int i = 0; i < 1000; i++) {
counter.increment();
}
});
Thread t2 = new Thread(() -> {
for (int i = 0; i < 1000; i++) {
counter.increment();
}
});
t1.start();
t2.start();
t1.join();
t2.join();
System.out.println(counter.getCount());
}
}
```
No answers yet.
Connectez-vous pour laisser une réponse