À quoi sert le mot-clé volatile en Java ? Expliquez avec des exemples
Bonjour à tous ! Je suis un développeur Java débutant, et dernièrement j'étudie activement le multithreading. Je suis tombé sur le mot-clé `volatile`, mais je ne comprends pas encore complètement à quoi il sert et quand l'utiliser.
J'ai écrit un petit code où un thread modifie le flag `running`, et un autre thread le vérifie dans une boucle. Sans `volatile`, le programme fonctionne parfois incorrectement — le deuxième thread ne voit pas le changement et continue de s'exécuter.
Voici mon code :
```java
public class TestVolatile {
private static boolean running = true;
public static void main(String[] args) throws InterruptedException {
Thread worker = new Thread(() -> {
while (running) {
// faire quelque chose
}
System.out.println("Worker arrêté");
});
worker.start();
Thread.sleep(1000);
running = false; // changer le flag dans le thread principal
System.out.println("Flag mis à false");
}
}
```
Le problème est que parfois le progr