Java线程教程 – Java Volatile变量
关键字volatile可以保持线程的工作内存中的变量值与它们在主存储器中的值同步。
我们可以声明一个变量volatile如下:
volatile boolean flag = true;
我们可以只声明一个类成员变量,实例或静态字段,作为volatile。
我们可以使用volatile变量作为标志来停止线程。
例子
下面的代码演示了volatile变量的使用。
public class Main extends Thread { private volatile boolean keepRunning = true; public void run() { System.out.println("Thread started"); while (keepRunning) { try { System.out.println("Going to sleep"); Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } System.out.println("Thread stopped"); } public void stopThread() { this.keepRunning = false; } public static void main(String[] args) throws Exception{ Main v = new Main(); v.start(); Thread.sleep(3000); System.out.println("Going to set the stop flag to true"); v.stopThread(); } }
上面的代码生成以下结果。