Wozu dient das Schlüsselwort volatile in Java? Erklären Sie mit Beispielen
Hallo zusammen! Ich bin ein Java-Anfänger und lerne in letzter Zeit intensiv Multithreading. Ich bin auf das Schlüsselwort `volatile` gestoßen, verstehe aber nicht ganz, wozu es dient und wann man es anwenden soll.
Ich habe einen kleinen Code geschrieben, bei dem ein Thread das Flag `running` ändert und ein anderer Thread es in einer Schleife überprüft. Ohne `volatile` funktioniert das Programm manchmal nicht korrekt – der zweite Thread sieht die Änderung nicht und arbeitet weiter.
Hier ist mein Code:
```java
public class TestVolatile {
private static boolean running = true;
public static void main(String[] args) throws InterruptedException {
Thread worker = new Thread(() -> {
while (running) {
// etwas tun
}
System.out.println("Worker gestoppt");
});
worker.start();
Thread.sleep(1000);
running = false; // Flag im Hauptthread ändern
System.out.println("Flag auf false gesetzt");
}
}
```
Das Problem ist, dass das Programm manchmal