Avatar ·

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