Avatar ·

Java中volatile关键字的作用是什么?请用示例解释

大家好!我是一名初级Java开发者,最近正在积极学习多线程。我遇到了`volatile`关键字,但不太理解它的用途和适用场景。\n\n我写了一段小代码,其中一个线程修改`running`标志,另一个线程在循环中检查它。没有`volatile`时,程序有时会运行不正确——第二个线程看不到变化并继续运行。\n\n这是我的代码:\n\n```java\npublic class TestVolatile {\n private static boolean running = true;\n\n public static void main(String[] args) throws InterruptedException {\n Thread worker = new Thread(() -> {\n while (running) {\n // 做点什么\n }\n System.out.println("Worker已停止");\n });\n worker.start();\n\n Thread.sleep(1000);\n running = false; // 在主线程中修改标志\n System.out.println("标志已设为false");\n }\n}\n```\n\n问题在于,有时程序